-
写了Debug语句没有把它注释掉…
比如说
printf("%d %d",max,min);//Debug
就这么交了上去,成功WA (0)分
-
诸如
if(a=1)
的低级玄学错误其实可以在编译的时候加上
-Wall
,编译器帮你筛出一些神奇的错误 -
看到(a^{-1})以为是普通的倒数?
看到这种形式的题目还出现了模数,则既有可能为数论倒数
否则可能无法理解题意或样例
-
打dfs/Trie的时候变量意义傻傻分不清?
要注意每个变量所代表的含义(当前处理数?节点编号?)
最好写个注释!(因为这个我调了几个小时!)
否则十分容易RE!!!
举个例子:
-
注意数据范围和空间限制
数组要开的比最大值多一点(e.g 范围(nle10^5),则数据开(100004)那么大)
小了就RE,大了就TLE
实在不能确定就用STL
-
注意范围
http://u.gdfzoj.com/submissions?problem_id=734&submitter=Z_Z_R
一个数组有效取值范围在(1)~(m)里,那么数组遍历一般这么写:
for(int i=1; i<=m; i++) { //do something... }
不要把(n)写成了(m),等等
否则起码WA
-
注意数组存放顺序
定义数组应该这么定义:
int a[2][N]
,常用的放后面(卡常)否则……举个例子:
-
注意边界数据
边界容易出错,要注意,必要时单独处理
举个例子:
-
注意数组越界
这种错误一般就 RE ,比如说数组没开够,访问非法内存,等等。
举个例子:http://u.gdfzoj.com/submission/18737 数组边界没开够 QAQ
-
注意算法正确性
贪心要证明,dp要注意状态转移方程、处理边界
举个例子:
-
运用快速幂时:注意快速幂后要模模数!
-
线性筛素数时:注意数组不要越界,如判断
1LL*i*p[j]<=n
-
做 ( exttt{dp}) 时未详细考虑数据范围,(100 o0),心态爆炸。
未完待续……