Update:2021.10.17
一、无模数时不开long long
见祖宗!!!有模数时不能开long long
,很大概率会超限。
二、当数据大时尽量别出现两个大数相乘的情况,否则用快速乘
三、注意运算的先后顺序
1.不确定优先级就死命加括号!!!
2.判断偶数时if(x%2==0)
不能改成if(!x%2)
,因为这样它会先算!x
,再算(!x)%2
,所以会得到错误答案,这里可以改成if(!(x%2))
。这东西搞得我一道题交了21遍才过。
四、数组下标不能出现负数或大于数组范围的数
五、数组不能开得过大,可能会MLE
六、模运算没有关于位运算的性质,所以计算时不能边异或边取模
七、计算时能模就模(除了上面这种情况),对于不用进行模运算的,尽量避免大数相乘
八、避免变量名相同而引发的错误
九、注意sort快排不稳定,要确保按输入顺序输出时应手打排序
十、max
、min
最好不要用define
(因为可能会造成奇奇怪怪的错误),最好手打函数
十一、for循环的边界条件如果需要调用函数(如:strlen()
),那么最好先算出来,否则复杂度会增加,有的题会卡掉。
十二、求pow(pow(x,a),b)
时,最好不要化成pow(x,a*b)
,虽然这是等效的,但是会莫名其妙地错误(a*b
未溢出)!
十三、不要用数组充当变量(如用dfn[0]
来记dfs序),这样会造成玄学的错误!我因此交了这题89次才发现错误所在,同时因此多花了两三个小时!
十四、最重要的东西
freopen(“problem.in”,“r”,stdin),考场上打错就凉凉