吹课四
Todo
博弈论
- 按照博弈状态建图跑拓扑排序判断先后手赢。
组合计数
-
就两种:dp 或 硬推。
-
等比数列。\(\sum^n_{i=1} p^i=\dfrac{p^{n+1} - p}{p - 1}\)
-
观察到一个数列有关于
1 3 3 1,1 4 6 4 1,就应该想到binomial了。 -
组合计数不一定为 dp,优化不了考虑一个式子算答案。
-
相邻两数操作后变成一个数,操作后整个序列长度减一的操作:大多和杨辉三角有关,因为贡献系数是杨辉三角。
-
正难则反,难解就反过来容斥。
树
- 将树分成大小为 \([B,3B]\) 的若干连通块,直接分。多余的点抛给父亲。e.g. prob。
并查集
- 当经过一些对边的贪心处理(e.g. 边权从小到大排序)后,如果要维护的信息可以再两颗树合并时维护,考虑并查集。
树的直径
树的重心
LCA
- 差分。
哈希
-
需要 \(O(1)\) 判 \(O(n)\) 的东西,大概率是哈希。
-
集合判相等,考虑集合哈希(赋随机权然后异或)(权值 \(\le n\) 着重考虑,如果否也可以离散化。e.g. prob。
DS
莫队
- 要求不强制在线,相邻区间递推复杂度较小。
线段树
-
必须满足信息可合并。
-
一些区间满足(一个点 / 一条线要求在区间中),考虑通过画图,转换为扫描线。e.g. prob。
分块
- 莫队,线段树等都不可行,使用分块。
DP
-
先写爆搜,再优化到 DP。
-
背包的状态描述一般为前 \(i\) 个元素,序列 DP 的状态描述一般为第 \(i\) 个元素,或,第 \(i\) 个元素结尾。
-
期望 DP:(优先考虑级从前往后)结尾状态确定:逆推(已经...(如何)到结尾状态还需要的期望,f[结尾状态]=0),开头状态:顺推(已经...后的期望,f[开头状态]=0),每种情况概率确定:状压。
-
排列 DP 的一种题型:求满足条件的排列个数,状态往往可以设计为:枚举当前填第 \(i\) 个数 的排名为 \(j\) 的 排列方案数。e.g. prob。
-
有关上升子序列的个数的 DP :\(f_{i,j}\) 为上升子序列长度为 \(i\),末尾下标为 \(j\) 的 LIS 个数。e.g. prob。
-
yao qiu he wei yi ge shu de bei shu: f[i][j = 0 ~ m - 1] -> di yi ge yuan su, yu shu wei j.
贪心
- 爆搜优化成 DP 仍然不可行,考虑贪心。
暴力
-
Subtasks 多劳多得。
-
爆搜 + 剪枝。
-
\(n!\) 的暴力往往可以变成 \(2^n\) 暴力。
式子计算
- \(\sum a [\text{binary}\_ \text{op}] b\) 可以逐位考虑答案。
杂项
-
仔细检查 ez 题边界条件:越界,0,爆
ll。 -
要证明一个数组中所有等于某个值的数,可以考虑让它既小于等于又大于等于这个值的数的并集。比如统计一个序列等于 \(3\) 的个数,考虑 \(\ge 3\) 和 \(\le 3\) 的并集。可以用于简化问题。e.g. prob。多用于计数。
-
统计一个序列中连续子区间的答案,可以考虑固定左端点统计右端点 / 固定右端点统计左端点,然后通过组合统计。
-
序列要求交替满足条件:奇偶性分类。
-
\(\sum \lfloor\dfrac{n}{i}\rfloor\) -> 数论分块,\(\lfloor\dfrac{n}{i}\rfloor\) -> 有可能是根号分治,\(i \le B\),记录 \(i\),\(i \ge b\),记录 \(\lfloor\dfrac{n}{i}\rfloor\) 的结果。
-
LIS:LIS 方案,填数用两种方法:按下标填,按值域填。

浙公网安备 33010602011771号