众所周知tyf是一个只会写bug,不会debug的菜鸡,在写题或者打比赛的时候,对于一些水题,经常有思路但都是会挖一个一个坑给自己,结果就是在坑上浪费很多时间和心情,或者再惨一点,就直接没过qwq,特别是感觉自己代码没错但过不了的时候,炒鸡崩溃qwq,把自己的bug记录下来,希望以后能少给自己挖一堆莫名其妙的坑!
-
在谁打过谁,谁打不过谁的问题里,要判断自己是不是能打过自己
-
检查数组范围!!!每 个 数 组 都 检 查 !!!
-
在爆ll的题里,检查是不是有中间变量也会爆ll,或者直接全设成ll型
-
打表的题可以先把表,printf出来,检查对不对
-
pow(a,b)函数是用在浮点数上的,不要用整数上啊啊啊,否则会造成结果的不准确,然后就wa了,院赛的时候就这样,debug好久都没发现qwq,自己写个快速幂能死吗???
-
流加速ios::sync_with_stdio(false);这个有坑啊,能不用就不要用,特别是处理字符串的时候
- 用getline()的时候,简直鬼畜,如果代码是这样婶的:(读入一个字符串,读入一行,读入一个字符串,如此循环)
while(cin>>s){
if(s=="ENDOFINPUT")break;
getchar();
getline(cin,now);
cin>>e;
//cout<<now<<endl;
int len=now.length();
}
不加流加速就ok,加上以后,会读不进去now字符串,解决方法:
A.不加流加速,但是要加getchar()
B.加流加速,不加getchar(),加cin.ignore()
2.用cin还用scanf的时候也会出错
-
打haut的新生赛都能自闭qwq,赛后看了看,其实还有两题能A的,只是当时没看题……,所以一定要看题再写啊,别人不会的不一定我不会,别人秒A的我可能过不了qwq
-
还有一个毛病,就是遇到数字的题,样例给的是1,2,3什么的,我迷之就没看数据范围,直接理解成数字只有0-9;还有一个题,给的样例都是0.几的浮点数,我就没考虑>1的浮点数(我是zz)
-
又一次因为爆int而wa,这次是给的mod的数爆int了,一般不都给1e9+7么,然后那道题给的是1e11+7,爆int了,我还用int设……wa了一晚上,改成ll,过了……
-
整数相除的结果是整数
-
注意if……if和if……else if的区别
-
写前向星的时候注意边数的取值范围
-
以字符串形式输入数字的时候,别忘了考虑负数的情况哦~~
-
qwq遍历字符串数组的时候,不要写成for(int i=0;i<strlen(s);i++),今天因为这个超时了,555,len=strlen(s);写成:
for(int i=0;i<len;i++)
-
一想到插入时有序,我就想用multiset,但是,set有个缺陷,它无法快速找到第i的元素,我们可以用vector实现这一功能,用vector插入时,每次先vector<int>::iterator it=lower_bound(a.begin(),a.end(),b[j]),很明显,二分就快很多
然后a.insert(it,b[j]);
-
图中找相同的图像,可以用字符串来表示,不同的图像
-
写线段树的时候,一定要注意,有没有爆int!!!
又因为爆int wa了qwq,这种情况可以这样:
for(ll i=2;i<=n;i++){
if(is_prime[i]==true){
d[i]=(i-1)*(i-1);
}
else{
solve(i);
}
}
- 给vector型的容器分配空间时:mape[i].resize(m+1); 若是从1开始存的记得+1!!!
又又又因为for循环中的i爆int,再发一遍,我就不信我不长记性啦,嘤嘤嘤
for(ll i=1;i<=n;i++){
scanf("%lld",&val);
mx1=max(mx1,i*i+val*val);
min1=min(min1,i*i+val*val);
mx2=max(mx2,i*i-val*val);
min2=min(min2,i*i-val*val);
}
- 注意有“a number of test cases”的情况啊啊啊,在循环内,该更新的变量数组记得更新!!!
- emm,感觉算法没错了,但是WA到怀疑人生,就+个EOF试试吧……
- double啊啊啊,乘除的数也设成double ,再设成int,你就凉了啊!!!