脑瘫日记

  1. 题目中给出的范围可能并不是最终范围,一定要计算出最坏情况后确定保险的范围;

  2. 局部变量可能会屏蔽全局变量(变量定两回);

  3. unsigned long long 占位符是 lushort 占位符是 hd

  4. ++i, ++j, --i, --j

  5. 压行的时候分清分号和逗号,注意语句控制范围 ,保守起见要加大括号;

  6. 一顿操作猛如虎,忘了清零二百五(又:多测不清零,抱灵两行泪);

  7. 如题目中要求严格输出,不要多空格;

  8. 构造函数数据类型不要出错;

  9. 0x7fffffff(7 个 f) 只是 int 的最大值, long long 的最大值是 0x7ffffffffffffff(14 个 f);

  10. 遇到给出比例,分数等,如未明确说明,需化简

  11. maxxminn初始化

  12. 如果 sort 很悬,使用 stable_sortmerge

  13. 谨防不明意义变量重名变量(如 lt[p].l),分不清的变量(如 ii, ij, jj, ji);

  14. 观察如下代码片段

    while (scanf("%d", &a[n++]) != EOF);
    

    不易发现的错误点在于,当 scanf("%d", &a[n++]); 读不到值时,循环终止,此时 n 为数组元素个数 + 2, 需要 n -= 2

  15. 无向图存边开双倍空间;

  16. 完全图用邻接矩阵存边,或开 \(n \times (n - 1) \over 2\) 的数组。

  17. 线段树开四倍空间,传参别写错;

  18. 递归时调用函数名别写错。

  19. 括号匹配 DP 时除了处理 (A)、[A] 之外,也要处理 AB。

  20. \(\gcd(a, b) = \gcd(b, a - b),(a \leq b)\)

  21. 边权在边上的树剖只需要将边权传到儿子上,最后一次修改 / 查询时忽略 LCA(即深度较浅的点)即可。

  22. 完全背包内层循环从小到大枚举可行原因:完全背包的特点恰是每种物品可选无限件,所以在考虑“加选一件第 \(i\) 种物品”这种策略时,正需要一个可能已选入第 \(i\) 种物品的子结果 \(f[i, v − Ci]\),所以就可以并且必须采用 \(v\) 递增的顺序循环。

posted @ 2023-09-19 20:53  HyperV  阅读(47)  评论(0)    收藏  举报