Combinatorics DP
长期更新。
CF626F Group Projects 写了。
CF1580B Mathematics Curriculum
答辩题 \(n^5\) 过 100
这个题目的条件是笛卡尔树的层数,考虑的意义是对于每个区间求 LCA 那么 LCA 必然处于 \(i\) 到根节点的链上。
求的就是构建点的个数为 \(n\),深度为 \(m\) 的儿子个数有 \(k\) 个。
然后考虑构建笛卡尔树。先选取一个根,然后注意到枚举一个儿子的子树大小和 \(\rm mth\) 儿子个数。
那么就是 :
\[f_{n, m, k} = \sum_i\sum_j f_{i, m - 1, j} f_{n - i - 1, m - 1, k - j} \tbinom{n - 1}{i}
\]
然后我们考虑 \(m = 1\) 的情况,那必然 \(k = 1\),那这个时候直接乱排即可,因为是相当于笛卡尔树的一个底层子树填数,而第 \(m\) 层必然作为子树的根。
CF1838E Count Supersequences
诈骗题。
首先 \(a\) 是什么是无关的。
因为这个是用所有的串减去不包含 \(a\) 这个子序列的串,后者和 \(a\) 的形态无关。
后面那个可以考虑一个 dp 的填数的过程,然后发现这个其实和 \(a\) 没有任何关系。
因为 \(m\) 很大,考虑正难则反,用所有的方案数减去不合法的方案。
\(k^m\) 显然是所有的方案数。
由于上面那个结论,考虑将所有的 \(a_i\) 看成一个东西,那不合法的就钦定其填了 \(i\) 位,然后剩下的乱填,让其填不到 \(i + 1\) 这一位即可。
所以答案的式子为 :
\[k^m - \sum_{i = 1} ^ {n - 1} \tbinom{m}{i} (k - 1) ^{m - i}
\]
因为 \(m\) 很大,所以考虑递推算组合数即可。
登高自卑,行远自迩。

浙公网安备 33010602011771号