信息学竞赛常用基础算法

信息学竞赛常用基础算法


2024年3月31日发(作者:)

读入优化

inlineintread(){

intx=0,f=1;

chars=getchar();

while(s<'0'||s>'9'){

if(s=='-')f=-1;

s=getchar();

}

while(s>='0'&&s<='9'){

x=(x<<1)+(x<<3)+s-'0';

s=getchar();

}

returnf>0?x:-x;

}

//怎么用:

n=read();

改进版(遇到文件末尾返回0):

inlinellread(){

llx=0,f=1;

chars=getchar();

while((s<'0'||s>'9')&&s>0){

if(s=='-')f*=-1;

s=getchar();

}

while(s>='0'&&s<='9'){

x=(x<<1)+(x<<3)+s-'0';

s=getchar();

}

returnf>0?x:-x;

}

输出优化

voidwrite(intx){

if(x/10>0)write(x/10);

putchar(char(x%10+'0'));

}

//怎么用:

if(n<0)putchar('-'),write(-n);

elsewrite(n);

方向数组

//四方向

intd1[4][2]={{1,0},{0,-1},{-1,0},{0,1}};

//八方向

intd2[8][2]={{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1},{0,1},{1,1}};

//用于平面DFS/BFS

坐标结构体

structitn{

intx,y;

itn(){}

itn(intX,intY){

x=X,y=Y;

}

};

普通快速幂

longlongquickpow(longlonga,longlongk){

longlongans=1;

while(k){

if(k%2)

ans*=a;

a*=a;

k>>=1;

}

returnans;

}

递归快速幂

longlongquickpow(longlongx,longlongy){//x的y次方

if(y==0)return1;

if(y==1)returnx;

longlongu=quickpow(x,y>>1);


发布者:admin,转转请注明出处:http://www.yc00.com/web/1711855471a1966389.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信