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\) 层必然作为子树的根。

sub

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\) 很大,所以考虑递推算组合数即可。

posted @ 2023-07-03 16:42  Cust10  阅读(33)  评论(0)    收藏  举报