记录一些 sb 错误

记录一些 sb 错误

  1. 离散化的最小值 \(val_0\) 应该赋值为不可能达到的值( \(val_0=-\infty\) )
  2. 函数传参数从右到左,在 f(rd(),rd()) 后会反过来。
  3. 连续的 if 中记得加上 else。因为在 if 中可能会改变下一个 if 的判断条件(如某一次洛谷月赛)
  4. 数组不要开小啦!好多次了,看到一个 \(n\) 的范围就将 \(m\) 的范围也开成 \(n\) 的范围。
  5. 可能取模的题目中实时取模!(又犯了一次,如 NOIP2021 T2)
  6. 手写 bitset 时移位操作为 (1llu<<((1llu*i-1llu)%64llu)),不要忘了 llu !!!
  7. 输入尽量不要用 %c,可以用 %s 代替。
  8. 拓扑排序时,要将整张图中入度为 \(0\) 的点全部加入,以保证能遍历整张图(即使我们不需要遍历其中一些点)(如 NOIP 函数调用)
  9. 当要求给浮点数赋值为 \(\infty\) 时,不要用 0x3f3f3f3f ,要用 2000000000 之类。
  10. 1 不是素数!!!
  11. 一些需要懒惰标记的题目中用 laztag,lazval 分别来表示是否有标记、标记信息,不要只使用一个 lazval 同时维护是否有标记。
  12. setsort< 一定要是有严格的偏序关系,也就是说必须满足传递性必须不满足自反性,也就是说不能既 a<bb<a
  13. 多测清空时,记住如果需要访问下标为 n+1 的地方,记得把第 n+1 位也清空(如某一场 CF 比赛)
  14. 树剖路径修改时关注信息在点上还是在边上,这决定了是否要在 lca 处再次处理。
  15. 输入时不要在数组中放 rd() 函数!可能会出一堆 Ub,如 mp[rd()][rd()]=rd();错误的!
  16. 合并两个点的时候记得判读他们是否已经处在同一个集合中。
  17. 没有线段树等奇怪操作时(define 是暴力展开,会让复杂度假掉)可以将 \(\max\)\(\min\)define 减小常数。
  18. 珂朵莉树、FHQ 等 split 一个区间时要先分裂右区间再分裂左区间,因为 rank 在分裂后会对后面的数产生影响。
  19. 内外层变量重名了。(好像可以用 -WshadowWarning)。
  20. 可撤销并查集的是深度,启发式合并需要的是大小
  21. 有的时候做题需要特判一些取模情况,如在 \(\bmod p\) 时输出 \(2\),不能直接 puts("2"),要 printf("%d\n",2%p)
  22. 三个 \(<998244353\) 的数相加相减会爆 int,如 ans=(ans-sum+mod)%mod 可能会导致爆 int
  23. 模数看错,如 1e9+7 看成 998244353
  24. 在倍增跳 lca 时判断是否会跳到 \(0\)!(如 P7834 Peaks 加强版)
  25. 数组长度是 \(n\) 还是 \(m\)??这是问题
  26. \(x\) 超过 int 时,调用 __builtin_popcount(x) 会出问题,需要使用 __builtin_popcountll(x)
  27. 对于字符串长度,如果长度为 \(3\) 不能只开到 \(3\),至少开到 \(4\)\(5\),首先是下标 \(0\),其次字符串末尾会自动天上 \0 导致空间 \(+1\)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值