傻逼错误
此处收录了 debug 时发现的一些血压飙升的错误。警钟长鸣。
- 注意 n 和 m 的读入顺序和在 for 循环里的使用,别把 n m 弄成 n n。
- 小心 1 和 '1',这是一个情急下很容易写错且难以意识到的问题。
- 注意多测的清空,尤其是多测下前向星数组的 head 和 cc。
- 注意数组的初始化。特别是 dp 的时候如果懒得写边界特判的时候。
- 注意 continue 的位置。如果你只是想跳过中间的某一段代码,后面还有另外的要执行,就不能 continue。这个问题在一开始没有考虑清楚逻辑,后续补上其它代码段时非常容易出现。
- 记得删 freopen。
- 小心 i*j n*i 之类的东西爆 int。
- 线段树大小是 0 的 build 会死循环。小心边界特判。
- queue 的初始化非常的慢,空间非常的玄学,不要开大的 queue 数组。
经验
- 理清程序逻辑
- 看清题目要求(例如昆明那道面积覆盖的矩形,写成了格点覆盖,死活没想到这个问题痛失银牌)
- 注意边界特判
- 检查傻逼错误(变量名、多测清空、初始化等)
- 对于复杂度玄学的 dp,尝试尽可能减少状态比卡常更有效