计数臭中杯训练

过年前就写好了,玩疯了忘记发了。。。

前置

\(s(n, m)\) 为第一类斯特林数,\(S(n, m)\) 为第二类斯特林数。

上升幂转普通幂:\(x^{\overline{n}} = \sum_{k}s(n, m)x^k\)。

普通幂转上升幂:\(x^n = \sum_k S(n, k)(-1)^{n - k}x^{\overline k}\)。

普通幂转下降幂:\(x^n = \sum_{k}S(n, k)x^{\underline{k}}\)。

下降幂转普通幂:\(x^{\underline{n}} = \sum_{k} s(n, k)(-1)^{n - k}x^k\)。


贝尔数:\(B_n\),表示基数为 \(n\) 的集合的划分方式的数目,有 \(B_{n + 1} = \sum_{k = 0}^n \binom{n}{k}B_k\)。

且根据定义 \(B_n = \sum_{i = 0}^n S(n, i)\)。


卡特兰数:\(C_n = \sum_{i = 0}^{n - 1} C_iC_{n - 1 - i} = \binom{2n}{n} - \binom{2n}{n + 1}\)。


记 \(S_m(n) = \sum_{k = 0}^{n - 1}k^m = \frac{1}{m + 1}\sum_{k = 0}^m\binom{m + 1}{k}B_kn^{m + 1- k}\)。

其中 \(B\) 为伯努利数。将 \(n = 1\) 带入可得到伯努利数的递推式 \(\frac{1}{m + 1} \sum_{k = 0}^{m}\binom{m + 1}{k}B_k = [m = 0]\)。


min-max 容斥:\(\underset{i\in S}{\max} x_i = \sum_{T \subseteq S} (-1)^{|T| - 1} \underset{j \in T}{\min}(x_j)\),\(\min\) 同理。

比较重要的是 min-max 容斥可以推广到期望上,即有:

\[\begin{align} E(\max x_i) = \sum_{T \subseteq S}(-1)^{|T| - 1} E(\min x_j) \\ E(\min x_i) = \sum_{T \subseteq S}(-1)^{|T| - 1} E(\max x_j) \end{align} \]

还能够更加加强,有:

\[\operatorname{kthmin}(S) = \sum_{T \subseteq S} (-1)^{|T| - k} \binom{|T| - 1}{k - 1} \max(T) \\ \operatorname{kthmax}(S) = \sum_{T \subseteq S} (-1)^{|T| - k} \binom{|T| - 1}{k - 1} \min(T) \]

期望同理加强。

从数论角度可得 gcd-lcm 容斥:\(\operatorname{lcm}(S) = \prod_{T \subseteq S, T \not = \varnothing} \gcd(T)^{-1^{|T| - 1}}\)。

ARC121E

不在祖先很困难,考虑将排列转化为逆排列,那么要求 \(p_i\) 不在 \(i\) 子树内,可以 DP。

考虑求 \(g_i\) 表示钦定 \(i\) 哥不合法,容斥得到答案为 \(\sum_{i = 0}^n(-1)^ig_i(n - i)!\)。

设 \(f_{u, i}\) 表示 \(u\) 子树内钦定 \(i\) 个不合法,转移是背包卷积。

ABC266G

二项式反演板子。

设 \(f_i\) 为钦定 \(i\) 个 RG,那么 \(f_i = \binom{n - 1}{i} \binom{n - 2i}{r - i} \binom{n - r - i}{g - i}\)。反演 \(g_i = \sum_{j = 1}^n (-1)^{j - i}\binom{j}{i}f_j\)。

P4859

做过,弱智二项式反演板子。

P6478

还是板子,我草没招了。

记 \(f_{u, i}\) 表示 \(u\) 子树内钦定 \(i\) 对非平局,转移是背包卷积。

P8329

设 \(f(S)\) 为第一棵树的非叶子集合恰好为 \(S\) 的方案,\(g(S)\) 同理第二棵树。记 \(U\) 为全集,则:

\[Ans = \sum_{S \cap T = \varnothing, S \cup T = U} f(S)g(T) \]

不好算,考虑容斥,令 \(f'(S)\) 和 \(g'(S)\) 表示非叶子集合包含于 \(S\) 的方案数。

\[\begin{align} Ans &= \sum_{S \cap T = \varnothing, S \cup T = U} \sum_{S' \subseteq S, T'\subseteq T} f'(S')g'(T')(-1)^{|S| - |S'| + |T| - |T'|} \\ &= \sum_{S \cap T = \varnothing} f'(S)g'(T)(-2)^{n - |S| - |T|} \end{align} \]

对于这个 dp,令 \(dp_{i, j, k}\) 表示到 \(i\),\(|\{1, \cdots, i\} \cap S| = j\),\(|\{i + 1, \cdots, n\} \cap T| = k\),且为 \((1, i]\) 选好了第一棵树的父亲,\([1, i)\) 选好了第二棵树的父亲。原因是 \(i\) 从 \(i - 1\) 过来时我们只知道 \(i \sim n\) 的 \(k\)。

  1. \(i \in S\),\(j \times k \times dp_{i - 1, j, k} \to dp_{i, j + 1, k}\)。
  2. \(i \in T\),\(j \times k \times dp_{i - 1, j, k} \to dp_{i, j, k - 1}\)。
  3. \(i \not \in S \wedge i \not \in T\),\(-2 \times j \times k \times dp_{i - 1, j, k} \to dp_{i, j, k}\)。

P4609

首先 \(n\) 将排列分为左右两个部分,考虑将被前缀和后缀 \(\max\) 挡住的与 \(\max\) 分成一组,组内之间不能交换。

那么就是第一类斯特林数,答案为 \(s(n - 1,A + B - 2)\binom{A + B - 2}{A - 1}\)。

P6620

下降幂多项式和组合数相乘有很好的性质,具体来说 \(\binom{n}{k}k^{\underline{m}} = \binom{n - m}{k - m}n^{\underline{m}}\)。

考虑将多项式 \(\sum_{i = 0}^{m} a_ik^i\) 转化为下降幂多项式 \(\sum_{i = 0}^m b_ik^{\underline{i}}\)。

\[\begin{align} \sum_{i = 0}^m a_ik^i &= \sum_{i = 0}^m a_i \sum_{j = 0}^i S(i, j)k^{\underline{j}} \\ &= \sum_{i= 0}^{m} k^{\underline{i}} \sum_{j = i}^m S(i, j)a_j \end{align} \]

因此 \(b_i = \sum_{j = i}^m S(i, j)a_j\)。

\[\begin{align} Ans &= \sum_{k = 0}^n \sum_{i = 0}^m b_i k^{\underline{i}} x^k \binom{n}{k} \\ &= \sum_{i = 0}^m b_i n^{\underline{i}} \sum_{k = i}^n \binom{n - i}{k - i} x^k \\ &= \sum_{i = 0}^m b_i n^{\underline{i}}x^i \sum_{k = 0}^{n - i} \binom{n - i}{k} x^k \\ &= \sum_{i = 0}^m b_i n^{\underline{i}}x^i(x + 1)^{n - i} \end{align} \]

CF1278F

要求式子为 \(\sum_{x = 0}^n \binom{n}{x} p^x(1 - p)^{n - x}x^k\),将 \(x^k\) 用下降幂拆一下然后推一推式子得到答案为 \(\sum_{i = 0}^kS(k, i)\binom{n}{i}i!p^i\)。

其中 \(p = \frac{1}{m}\),最后还要除以概率 \(p^n\)。

P3175

令 \(E(\max(S))\) 为 \(S\) 中最晚出现元素的期望时间,有 min-max 容斥 \(E(\max(S)) = \sum_{T \subseteq S, T \not= \varnothing}(-1)^{|T| - 1}E(\min(S))\)。

\[E(\min(S)) = \frac{1}{1 - \sum_{T \cap S = \varnothing} p_T} \]

这是好求的,高维前缀和一下即可。

uoj424

两个串同构意味着笛卡尔树形态相同,考虑不同构的情况,由于最大值优先取下标小的,所以我们可以将向左走看作 \(+1\),向右走看作 \(+0\),那么序列中只能出现 \(1 \sim m\) 要求最长左链(这里的意思是向左儿子走最多的链)长度 \(\leq m\),并且最终树上要出现所有的数。

于是我们转化为对笛卡尔树计数,不妨将笛卡尔树转化为括号序列,具体地令叶节点为 \(()\)。假设左儿子的括号序列为 \(s_l\),右儿子为 \(s_r\),那么这个结点对应的括号序列为 \((s_l)s_r\)。于是转化为括号串计数。

此时我们将 \((\) 视作 \(+1\),\()\) 视作 \(-1\),那么要求变为不能碰到 \(y = x + m + 1\) 和 \(y = x - 1\) 两条直线,反射容斥即可。

P5825

本质是在求欧拉数,今年 WC 讲了这个。但我不会那么高级的做法。

先恰好转钦定,进行二项式反演。钦定 \(k\) 个位置升高,此时序列被分成了 \(n - k\) 个递增段,我们需要计数将 \(1 \sim n\) 放入 \(n - k\) 个非空集合且每个集合不为空。

对空集合容斥,设 \(f(k)\) 为放入 \(k\) 个有标号集合的方案,可以得到 \(f(k) = \sum_{i = 0}^k \binom{k}{i}(-1)^i(k - i)^n\)。

卷积一下就行了。

P10004

P5825 的二维版本,首先二项式反演一下容易做到 \(O(n^3)\) 二维二项式反演算答案,于是只需要求 \(f_{i, j}\) 表示钦定原排列有 \(i\) 个上升对,反排列有 \(j\) 个上升对。

接下来考察原排列上升段的性质,由于数值和下标都上升,所以原排列上升段对应的反排列的位置的值也是递增的。

非常精妙的一步转化,令 \(c_{x, y}\) 表示原排列中第 \(x\) 个上升段中有 \(c_{x, y}\) 个元素划分在第 \(y\) 个上升段中。这样形成的矩形有两个约束:

  • 所有元素的总和为 \(n\)。
  • 任意行、列总和不为 \(0\)。

对满足第一个条件的矩形计数是简单的,设为 \(t_{x, y} = \binom{n + xy - 1}{xy - 1}\)。

不妨进行容斥,令 \(g_{i, j}\) 为原排列与反排列分别有 \(x\)、\(y\) 个上升段的方案数,也就是合法矩形的方案数。枚举为 \(0\) 的行列数量,我们得到:

\[t_{x, y} = \sum_{a \leq x}\sum_{b \leq y} \binom{x}{a} \binom{y}{b} g_{a, b} \]

那么二项式反演一下,再用与开头所提类似的前缀和技巧优化即可做到 \(O(n^3)\)。

P3349

朴素 DP 设 \(f_{i, j, S}\) 表示点 \(i\) 在图中对应点 \(j\),\(i\) 子树内的点对应集合 \(S\)。因为要枚举子集所以复杂度很高。

这么做复杂度高的原因是不同的点的对应点不能相同,在状态里记录了 \(S\)。

现在我们需要 \(n\) 个点恰好对应到 \(S\) 中的点,不妨容斥,计算选择 \(S\) 中的点的子集的方案数,即钦定 \(U/S\) 的点不选。转移系数为 \((-1)^{(n - |S|)}\)。

DAG 计数

对 \(n\) 个点的带标号 DAG 进行计数。

设 \(i\) 个点的带标号 DAG 数量为 \(f_i\),考虑进行容斥,钦定 \(j\) 个点入度为 \(0\),这 \(j\) 个点可以随意向另外 \(i - j\) 个点连边。于是有:

\[f_i = \sum_{j = 1}^i (-1)^{j - 1}\binom{i}{j}2^{(i - j)j}f_{i - j} \]

\(O(n^2)\) 即可完成。

P11714

承上,DAG 容斥模板题。

设 \(F_S\) 为 \(S\) 中的点强连通的方案数,\(G_S\) 为 \(S\) 内的点缩成若干个入度为 \(0\) 的点的方案数,\(E_{S, T}\) 为 \(S\) 到 \(T\) 的边数。

有 \(F_S = 2^{E_{S, S}} - \sum_{T \subseteq S, T \not = \varnothing}(-1)^{?}G_T2^{E_{T, S - T} + E_{S - T, S - T}}\)。

? 处应该是缩成点的数量,但是我们并不知道这个,所以考虑把容斥系数直接计入 \(G\),令 \(G_{S}\) 为 \(S\) 内的点缩成奇数个点(入度为 \(0\))的方案数减去偶数个点的方案数。

此时 \(F_S = 2^{E_{S, S}} - \sum_{T \subseteq S, T \not = \varnothing}G_T2^{E_{T, S - T} + E_{S - T, S - T}}\)。

考虑如何转移 \(G\),会发现缩点后的几个 SCC 之间没有关系,于是考虑钦定 \(\operatorname{lowbit}(S)\) 所属的 SCC 为最新加入的。

\(G_S = F_S - \sum_{T \subset S, \operatorname{lowbit}(S) = \operatorname{lowbit}(T)} F_TG_{S - T}\)。

注意这里的转移顺序一定是先算 \(G_S\) 不加 \(F_S\),再算 \(F_S\),再把 \(F_S\) 加到 \(G_S\) 上。

最后考虑怎么算 \(E_{S, T}\) 会发现用到的形式只有 \(E_{T, S - T}\) 和 \(E_{S, S}\),后者单独算,前者每枚举一个 \(S\) 就算一个即可。

具体有:

\(E_{T, S-T} = E_{T + x, S - T - x} - \operatorname{popcount}(out_x \cap (S - T)) + \operatorname{popcount}(in_x \cap T)\),

\(E_{S, S} = E_{s - x, s - x} + \operatorname{popcount}(in_x \cap S) + \operatorname{popcount}(out_x \cap S)\)。

于是我们只需要 \(O(3^n)\) 就可以解决这个问题。

ARC105F

考虑对二分图的染色方案计数。设为 \(f(S)\)。

接着会发现连通性不好刻画,不妨把这个条件容斥掉,设为 \(g(S)\)。转移 \(g(S)\) 时枚举子集 \(T\) 为黑点即可。

转移 \(f(S)\) 时与上题类似枚举 \(\operatorname{lowbit}(S)\) 所在集合容斥即可。

posted @ 2026-02-19 09:38  比翼の鼠  阅读(34)  评论(0)    收藏  举报