Processing math: 100%

那些年犯下的 SB 错误

那些年犯过的 SB 错误

1: 多组数据忘记清空数组

2: 清空时 memset TLE

只要用 sizeof(int)(n+1) , 用多少清多少就好啦.

3: 求最值忘记初始化

最大值要初始化到 inf (避免负数) , 最小值要初始化到 inf .

4: 位运算不会强转

1<<40ll 仍然是int, 不会转成ll, 要用 1ll<<40 .

5: 取模不规范, 亲人两行泪

不要看到 1e9+x 就写 1e9+7 , 万一是 1e9+9 呢?

6: 写错下标

i 个操作要修改的下标是 num[i] , 不要把下标写成 i , 要写 num[i] .

当前节点为 x , 循环变量为 i , 数组下标看清楚是 x 还是 i .

7: 新建指针时千万不能连等

ls = new node, rs = new node;

不能写成

ls = rs = new node;

否则会给 lsrs 赋成相同的地址.

8: 忘记初始化下标

在多次更新答案的时候, 如果答案需要输出方案, 且每次都是下标从 0 开始的方案, 记得把下标变量重置为 0 .

9: 计数时漏掉最后的一段

如果是在出现非法情况时统计合法数量, 则需要在循环外特判一下最后的一段, 防止最后出现连续的一段合法.

10: 忘记取模

有时候要预处理阶乘之类的东西, 这个也是要取模的.

11: 忘记初始化

写数据结构的时候记得建树, 写倍增 LCA 和树链剖分的时候记得 DFS .

12: 变量名重复

i,j,k,l 这类常在循环中出现的变量名, 一定要注意一下有没有在全局/局部变量中出现.

13: 计算贡献时忘记乘价值

比如计算距离时直接加路径被计算的次数, 而忘记乘路径长度.

14: 读入字符/字符串时遇到空格/换行符

getchar 在读入时会读入空格和换行符, 所以建议使用 scanf .

15: 指针变量没有 new

定义完指针变量之后是个 NULL , 使用之前要先 new .

16: freopen 那些事

OJ 上记得删, 比赛中记得加

17: 清空不规范, 爆零两行泪

清空的时候注意数组使用了的范围, 尤其是多个变量时, 可能不同, 也可能是 n+1,n+2 之类的...

posted @   sshadows  阅读(79)  评论(4)    收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示