-
写了Debug语句没有把它注释掉……
比如说
printf("%d %d",max,min);//Debug
就这么交了上去,成功 WA(\(0\))分。
-
诸如
if(a=1)
的低级错误其实可以在编译的时候加上
-Wall
,编译器帮你筛出一些神奇的错误。 -
看到 \(a^{-1}\) 以为是普通的倒数?
看到这种形式的题目还出现了模数,则既有可能为数论倒数。
否则可能无法理解题意或样例
-
打 dfs/Trie 的时候变量意义傻傻分不清?
要注意每个变量所代表的含义(当前处理数?节点编号?)
最好写个注释!(因为这个我调了几个小时!)
否则十分容易RE!!!
举个例子:
-
注意数据范围和空间限制
数组要开的比最大值多一点(e.g 范围 \(n\le10^5\),则数据开 \(100004\) 那么大)
小了就RE,大了就TLE
实在不能确定就用STL
-
注意范围
http://www.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://www.gdfzoj.com/submission/18737 数组边界没开够 QAQ
-
注意算法正确性
贪心要证明,dp要注意状态转移方程、处理边界
举个例子:
-
运用快速幂时:注意快速幂后要模模数!
-
线性筛素数时:注意数组不要越界,如判断
1LL*i*p[j]<=n
-
做 \(\texttt{dp}\) 时未详细考虑数据范围,\(100\to0\),心态爆炸。
-
在一个序列中,最长下降子序列的个数就等于其最长不下降子序列的长度.
反过来也一样:在一个序列里,不上升子序列的个数等于最长上升子序列的长度。
-
在使用数据结构查询时,注意标记是否释放,数据是否同步!
-
一个
unsigned long long
的变量要用%llu
输出(此时要有#include<climits>
)。
未完待续……