Lockey的沙雕低错集锦(持续更新)
(嘿嘿 (^~ ^))
1. bitset<2100>a[2100] a[x]|=(1<<x)(错误示范,请勿学习) (1<=x<=2100) 使用时忘了x的范围,额,应为 a[x][x]=1 (错于[Jsoi2010]连通数,BZOJ上wa了13次----2019.7.13)
2. tarjan初始化了一堆,就是忘了初始化num,cnt,一定记得初始化到所有的(最好数一数);
3. vector 名为spn写成son,导致RE,RE又RE,注意变量名要区分开
4. 总是把i写成x,或者老眼昏花把i写成j……i,j,x分清楚,n,m也是 (插头DP第一题,Ural 1519 Formula 1 因为搞混而超时(主要是段错误))
5. 取最小值没有初始化为最大值,8分和100分的区别
6. 当题中没有输入停止的条件时,不要把scanf 写在while(1)死循环里面,可以写成while(scanf("%d",&n)!=EOF) 或者 while(~scanf("%d",&n)).
7.注意一定要检查输出格式,一定记得换行,一定,一水题我卡了一上午(看提交时间)WTF!
8. (20190726 天使玩偶)关于scanf("%d",a[++num])或scanf("%d%d",a[++num],a[num])等同一类的调用时,最好把++num写在外面,
mikufun猜测输入什么的可能是一个栈
粘一个Lockey关于这种问题的调试代码
#include<iostream> #include<cstdio> using namespace std; struct node{ int x,y; }q[110]; int num; int main(){ int w[110],k[110],t=0; cout<<"——————————数组————————————————————————————————"<<endl; scanf("%d%d%d%d",&w[++t],&w[++t],&w[++t],&w[++t]); cout<<w[1]<<" "<<w[2]<<" "<<w[3]<<" "<<w[4]<<endl; cout<<"——————————结构体——————————————————————————————"<<endl; scanf("%d%d%d%d",&q[++num].x,&q[++num].x,&q[++num].x,&q[++num].x); cout<<q[1].x<<" "<<q[2].x<<" "<<q[3].x<<" "<<q[4].x<<endl; cout<<"——————————分开输入————————————————————————————"<<endl; num=0,t=0; cout<<"数组——————————————"<<endl; for(int i=1;i<=4;i++) scanf("%d",&w[++t]); for(int i=1;i<=4;i++) printf("%d ",w[i]); cout<<endl; cout<<"结构体————————————"<<endl; for(int i=1;i<=4;i++) scanf("%d",&q[++num].x); for(int i=1;i<=4;i++) printf("%d ",q[i].x); cout<<endl; cout<<"数组输两个数——————————————"<<endl; t=0; for(int i=1;i<=4;i++) scanf("%d%d",&w[++t],&k[t]); for(int i=1;i<=4;i++) printf("%d %d\n",w[i],k[i]); cout<<endl; cout<<"结构体输两个数————————————"<<endl; num=0; for(int i=1;i<=4;i++) scanf("%d%d",&q[++num].x,&q[num].y); for(int i=1;i<=4;i++) printf("%d %d\n",q[i].x,q[i].y); cout<<endl; }
9. 写一堆又长又臭的相似但不重复的代码时,有时间尽量自己打,就算粘贴的话,千万要记得不一样的地方要改掉(天使玩偶就因为这个,导致样例全出-100多,卡了一下午)
10.递归或递推函数注意递归(递推)边界,否则死循环(TLE,RE,死都不知道怎么死的)
11.