CSP-S 2020 考前总结

知识点

新学知识点

  1. 第二类斯特林数: 把 (n) 个不同的球放在 (m) 个相同的非空盒子的方案数

    • 递推式: 枚举最后一个球是单独开一个盒子还是放在之前的盒子里.

      [S(n, m) = S(n - 1, m - 1) + mS(n - 1,m) ]

    • 计算式: 容斥, 钦定空盒.

      [S(n,m) = frac{1}{m!} sum_{i=0}^m(-1)^i imes inom{m}{i} imes (m - i)^n ]

    • 性质: 枚举非空盒.

      [m^n = sum_{i = 0}^m inom{m}{i} imes i! imes S(n, i) ]

  2. Johnson算法 (最短路)

    总思路: 先求出一个虚拟节点到所有点的最短路, 然后把负边权变为非负数, 然后就可以用 Dijkstra 了.

    对于边 ((u,v)), 设其权值为 (w). 假设预先求出的最短路为 (d[u]), 那么根据三角形不等式, 则有

    [d[v] - d[u] le w ]

    所以

    [w + d[u] - d[v] ge 0 ]

    所以把 (w) 加上 (d[u] - d[v]) 就可以保证它非负了.

    在求路径的过程中, 路径中间的 (d[u]) 会被抵消掉, 最后再 (-d[s] + d[t]) 就好了 ((s,t) 分别为路径起点和终点).

  3. 二维数点 (CDQ分治)

  4. 树形背包泛化物品优化

    大概就是对于根节点可以直接把子树抛弃的背包, 可以直接在 (dfs) 序上做. (没有进一步去了解过, 只是联考的时候碰到过一次.)

  5. 高斯消元 (求行列式): 就是直观解方程, 求行列式的时候要注意: 化成上三角矩阵时为了保证对角线有值, 需交换行.

  6. 矩阵树定理:

    只学了无向图的.

    [L(G) = D(G) - A(G) ]

    (D(G)) 为度数矩阵, (A(G)) 为邻接矩阵.

    答案就是 (L(G)) 任意 (n - 1) 阶主子式的值. (就是把 (L(G)) 删掉任意一行一列然后求行列式的值).

  7. kosaraju算法 (求SCC个数):
    先对原图跑逆反序 (dfs) (就是 (dfs) 是记录出栈顺序), 然后按照出栈顺序从后往前对反图进行 (dfs), (dfs) 次数就是原图 (SCC) 个数. (先跑反图再跑原图也是对的.)

  8. 虚树: 按 (dfs) 序排序, 开个栈, 弹出 (dfs) 序比自己小且不是自己祖先的点. (注意一个点只有当它被弹出时才要连边).

  9. 多项式(部分)全家桶: 求逆, ln, exp, 快速幂, 牛顿迭代, 卡常 (注意事项: FFT 是循环卷积.)

小技巧

二维数点

  1. 静态二维数点: 扫描线 + 树状数组
  2. 动态二维数点
    1. 强制在线: 树套树 (线段树套线段树)
    2. 离线:
      1. CDQ分治
      2. 离线树状数组套树状数组

涉及到区间范围的题目可以考虑转化为二维数点.

颜色统计

  1. 区间颜色统计: 对每一位维护一个 (nxt), 指向下一个与它颜色相同的点. 对于区间 ([l,r]), 我们只需统计 (i in [l,r])(nxt[i] > r) 的点, 转化为二维数点即可.
  2. 子树颜色统计: 按照 (dfs) 序维护 (nxt), 并利用树上差分, 在 (i) 处 +1, 在 (lca(i, nxt[i])) 处 -1, 统计子树 (sum) 即可.

"最值连通性"问题

自己随便起的名字.

就是说某个范围内, 所有点的 a 都大于/小于某个值时图连通, 就考虑 (kruskal) 重构树.

考试策略

  1. 对于细节比较多的贪心 / DP题, 一定要静下心来想, 最好写下来, 理清思路, 并适时放弃. 千万不要刚题.

  2. 看到数据结构题, 如果 5 min 内没想出比较合适且不会很难写的方案, 就先把暴力敲了, 然后看其他题, 正解留到最后. (计算几何题同理)

  3. 写题前一定要理清思路, 确保做法的正确性, 避免 1h 后才发现做法是假的的情况.

  4. 注意数据范围, 在开始思考前先确定题目的数据范围, 会对考虑的方向有影响.

  5. 能对拍尽量对拍, 如果暴力不好写, 也要测试一下极限数据. 重视静态查错的作用 (特别对于简单题).

  6. 对与题目无关的突发情况尽量无视. 与题目有关的突发情况, 如: 题目出锅, 做法假了. 一定要保持冷静, 仔细思考, 若真的假了就果断放弃, 看情况是否打部分分, 然后去看其他题目.

  7. 进考场后, 如果能碰键盘了, 就先把配置敲了, 如果还有时间, 就把快读和对拍需要的 data, cmp 模板敲一遍. 敲完之后可以回想一些常用的式子和性质, 比如斯特林数, 斐波那契数列, 错排, 不相邻组合, 可重组合, 矩阵树定理什么的.

原文地址:https://www.cnblogs.com/BruceW/p/13935993.html