CSP-S 2020 考前总结
知识点
新学知识点
- 
第二类斯特林数: 把 \(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 \times \binom{m}{i} \times (m - i)^n \]
- 
性质: 枚举非空盒. \[m^n = \sum_{i = 0}^m \binom{m}{i} \times i! \times S(n, i) \]
 
- 
- 
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\) 分别为路径起点和终点). 
- 
二维数点 (CDQ分治) 
- 
树形背包泛化物品优化 大概就是对于根节点可以直接把子树抛弃的背包, 可以直接在 \(dfs\) 序上做. (没有进一步去了解过, 只是联考的时候碰到过一次.) 
- 
高斯消元 (求行列式): 就是直观解方程, 求行列式的时候要注意: 化成上三角矩阵时为了保证对角线有值, 需交换行. 
- 
矩阵树定理: 只学了无向图的. \[L(G) = D(G) - A(G) \]\(D(G)\) 为度数矩阵, \(A(G)\) 为邻接矩阵. 答案就是 \(L(G)\) 任意 \(n - 1\) 阶主子式的值. (就是把 \(L(G)\) 删掉任意一行一列然后求行列式的值). 
- 
kosaraju算法 (求SCC个数): 
 先对原图跑逆反序 \(dfs\) (就是 \(dfs\) 是记录出栈顺序), 然后按照出栈顺序从后往前对反图进行 \(dfs\), \(dfs\) 次数就是原图 \(SCC\) 个数. (先跑反图再跑原图也是对的.)
- 
虚树: 按 \(dfs\) 序排序, 开个栈, 弹出 \(dfs\) 序比自己小且不是自己祖先的点. (注意一个点只有当它被弹出时才要连边). 
- 
多项式(部分)全家桶: 求逆, ln, exp, 快速幂, 牛顿迭代, 卡常(注意事项: FFT 是循环卷积.)
小技巧
二维数点
- 静态二维数点: 扫描线 + 树状数组
- 动态二维数点
- 强制在线: 树套树 (线段树套线段树)
- 离线:
- CDQ分治
- 离线树状数组套树状数组
 
 
涉及到区间范围的题目可以考虑转化为二维数点.
颜色统计
- 区间颜色统计: 对每一位维护一个 \(nxt\), 指向下一个与它颜色相同的点. 对于区间 \([l,r]\), 我们只需统计 \(i \in [l,r]\) 且 \(nxt[i] > r\) 的点, 转化为二维数点即可.
- 子树颜色统计: 按照 \(dfs\) 序维护 \(nxt\), 并利用树上差分, 在 \(i\) 处 +1, 在 \(lca(i, nxt[i])\) 处 -1, 统计子树 \(sum\) 即可.
"最值连通性"问题
自己随便起的名字.
就是说某个范围内, 所有点的 a 都大于/小于某个值时图连通, 就考虑 \(kruskal\) 重构树.
考试策略
- 
对于细节比较多的贪心 / DP题, 一定要静下心来想, 最好写下来, 理清思路, 并适时放弃. 千万不要刚题. 
- 
看到数据结构题, 如果 5 min 内没想出比较合适且不会很难写的方案, 就先把暴力敲了, 然后看其他题, 正解留到最后. (计算几何题同理) 
- 
写题前一定要理清思路, 确保做法的正确性, 避免 1h 后才发现做法是假的的情况. 
- 
注意数据范围, 在开始思考前先确定题目的数据范围, 会对考虑的方向有影响. 
- 
能对拍尽量对拍, 如果暴力不好写, 也要测试一下极限数据. 重视静态查错的作用 (特别对于简单题). 
- 
对与题目无关的突发情况尽量无视. 与题目有关的突发情况, 如: 题目出锅, 做法假了. 一定要保持冷静, 仔细思考, 若真的假了就果断放弃, 看情况是否打部分分, 然后去看其他题目. 
- 
进考场后, 如果能碰键盘了, 就先把配置敲了, 如果还有时间, 就把快读和对拍需要的 data, cmp 模板敲一遍. 敲完之后可以回想一些常用的式子和性质, 比如斯特林数, 斐波那契数列, 错排, 不相邻组合, 可重组合, 矩阵树定理什么的. 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号