低级错误集合

版权声明:欢迎转载(请附带原链接)ヾ(๑╹◡╹)ノ" https://blog.csdn.net/corsica6/article/details/83011080

文件错误

1.文件名打错

2018.10.11
T1:

	freopen("forging","r",stdin);
	freopen("forging","w",stdout);

看着好像没什么不对??

	freopen("forging.in","r",stdin);
	freopen("forging.out","w",stdout);

100分惨变0分
总分150惨变50分
rk5惨变rk22


内存错误

1.数组开小

2018.9.21
T1(bzoj5218友好城市):

const int N=155,M=3e5+10,MX=5e4+10;
struct Q{int l,r,id;}qr[MX];

emmm,实际上询问是 3 e 5 3e5

const int N=155,M=3e5+10,MX=5e4+10;
struct Q{int l,r,id;}qr[M];

100分惨变30分
总分190惨变120
rk1惨变rk2
const数组常量最好不要开多个,很容易混淆


爆int

这类错误几个月前犯的很多。


变量名打错

2018.10.8
T2:

printf("%d\n",(f[x][m][K]+f[z][m][K])%mod);

emmm,实际上这里应该是上一个y

printf("%d\n",(f[x][m][K]+f[y][m][K])%mod);

i,j打反,顺手数组打错等等。
原因:

  1. 码的时候过于着急
  2. 注重速度的同时没有仔细看自己打的代码(跟着逻辑走)
  3. 没有理解清楚每个变量的含义和之间的关系
  4. 没有仔细检查
    这种错误检查的时候也很难看出来,就算看出来了也很难检查全。
  5. 一些变量设成了全局变量,导致错用一个不在分函数里的变量也没有RE,最终导致了WA/RE/TLE

分函数错误

1.传值/址错误

最近写搜索题时新发现的一个问题,数组传值进函数需要用结构体,否则直接f(int res[][])会传址,(即使是另一个函数的局部变量也会改变)

2.没有return

int,long long类函数没有return!不会RE但是会WA


初始化错误

多组数据时没有清空上一轮数据或没有优化清空方式导致TLE


判断错误

多层if/else一定要多打大括号!


注意事项

  1. 一定要先手玩样例无误后再开码
  2. 一定要对拍!
  3. 最后15/10/5分钟不要着急写新的代码,要检查文件名输入输出
  4. 检查的时候顺便在文件里( . i n , . o u t .in,.out )输出输出看一下
  5. 为防止 R E RE ,构造满数据跑一跑
  6. const数组常量最多开两个
  7. 输出所有的数组的sizeof()注意不要MLE
  8. 检查题目中给的数据范围和对应的数组大小

猜你喜欢

转载自blog.csdn.net/corsica6/article/details/83011080