我跳过的坑

  1. 写了Debug语句没有把它注释掉…

    比如说

    printf("%d %d",max,min);//Debug
    

    就这么交了上去,成功WA (0)

  2. 诸如if(a=1)的低级玄学错误

    其实可以在编译的时候加上-Wall,编译器帮你筛出一些神奇的错误

  3. 看到(a^{-1})以为是普通的倒数?

    看到这种形式的题目还出现了模数,则既有可能为数论倒数

    否则可能无法理解题意或样例

  4. 打dfs/Trie的时候变量意义傻傻分不清?

    要注意每个变量所代表的含义(当前处理数?节点编号?)

    最好写个注释!(因为这个我调了几个小时!)

    否则十分容易RE!!!

    举个例子:

    1. http://u.gdfzoj.com/submission/14426

    2. http://u.gdfzoj.com/submission/14452

  5. 注意数据范围和空间限制

    数组要开的比最大值多一点(e.g 范围(nle10^5),则数据开(100004)那么大)

    小了就RE,大了就TLE

    实在不能确定就用STL

    举个例子:http://u.gdfzoj.com/problem/734

  6. 注意范围

    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

  7. 注意数组存放顺序

    定义数组应该这么定义:int a[2][N],常用的放后面(卡常)

    否则……举个例子:

    1. http://u.gdfzoj.com/submission/15745

    2. http://u.gdfzoj.com/submission/15859

  8. 注意边界数据

    边界容易出错,要注意,必要时单独处理

    举个例子:

    1. http://u.gdfzoj.com/submission/18757

    2. http://u.gdfzoj.com/submission/18758

  9. 注意数组越界

    这种错误一般就 RE ,比如说数组没开够,访问非法内存,等等。

    举个例子:http://u.gdfzoj.com/submission/18737 数组边界没开够 QAQ

  10. 注意算法正确性

    贪心要证明,dp要注意状态转移方程、处理边界

    举个例子:

    1. http://u.gdfzoj.com/submission/18690

    2. http://u.gdfzoj.com/submission/18691

  11. 运用快速幂时:注意快速幂后要模模数

  12. 线性筛素数时:注意数组不要越界,如判断1LL*i*p[j]<=n

  13. ( exttt{dp}) 时未详细考虑数据范围,(100 o0),心态爆炸。

  14. https://www.cnblogs.com/Sam2007/archive/2020/07/22.html

  15. https://oi-wiki.org/contest/common-mistakes/

未完待续……

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

限于本人水平,如果文章有表述不当之处,还请不吝赐教。

原文地址:https://www.cnblogs.com/Sam2007/p/12409457.html