由于睿智错误过多,因此在这里梳理一下。
1. 测内存
大概爆过2~3次。
可以在每次打代码的板子里面,直接加个这样一段代码
#define CM cerr<<(&S2-&S1)<</1024./1024.<<"MB<<endl
bool S1;
……
bool S2;
int main(){
CM;
……
return 0;
}
2.输入输出语句(debug)
这类错误也犯过不只2次了。
可以在检查的时候,使用Ctrl+Shift+f,把scanf,printf,cout,cerr这些语句直接找出来,一个个看过去。
在检查输入的时候,要把输入的格式与自己的读入变量一个个对过来。
3.变量类型
爆long long!爆long long!!爆long long!!!
每次结束的时候把变量名一个个看过来,重新计算一下会不会爆限制。
4.数组越界
这也是经常犯的问题,前几天刚出过这类问题……
要注意在开的数组里面,检查一下会不会调用数组的时候,调用到后面的内存去了,或者多维的时候打错维了
最好还要测试一下极限数据,这样对检查很有帮助。
5.多case
多case一定要注意清零!死了多少次不知道了……
6.取模
不要手打模数(在能复制的前提下),最好是复制题目所给定的模数。
7.正确性
最好是把样例统统对一遍。这样比较保险。
还有就是能对拍就对拍,别嫌麻烦(除非那种没有意义的,比如答案大部分时间为0什么的)
8.切分相关
既然你切分都打下来了,并且已经知道他是对的了,就别忘记去掉对拍时加上的注释!
最好是打一个list,把要检查的项目写下来,检查过程中一个个对过去。
睿智错误/不该错的点:
2019.10.29
- (string)的前面加字符是(O(n))的!
- 在删掉debug的注释的时候别把多余的东西删掉!
2019.11.03
- 在切分随机数据的时候,千万不要把别的切分也切进去!!!
2019.11.10
- 正常考试的策略。T1卡住了就不要死刚,一时半会想不出来是可能的。不要慌,要先冷静下来,把后面的暴力分打满了再回来想正解。
- 暴力分能拿到的一定要尽力拿到。考试总时间就那么短,一般是不能直接快速想出正解的(
除非太水了),而此时一些暴力分可以帮我们一步步挖掘题目的性质,说不定暴力分打着打着就出来正解了。再说,就单单打满暴力分也能上(200)分。 - 切下来的分要保证其正确。不要打了好久,死YY出了一档的切分,然后考试后发现打错了/思想是错的,这样就会浪费大把时间。
但愿这次(30+30+0)能给自己一个深刻的教训。
2019.11.11
- 又!没!把!切!分!切!到!
- 最后考还是15分钟不要去肝切分了!还不如去检查!
线段树Down操作-1写成+1 丢 15分
T2 容斥 取模不规范 丢 20分
又只考了 100 + 20 + 55 = 175 垫底了……