组合/概率/形式幂级数/多项式/集合幂级数的题


JZOJ5520 Every one will meet some difficult

原题TCO2013 3A TrichyInequality

Description

满足\(\sum\limits_{i = 1}^m {a_i} \le S 且 \forall i, a_i > 0, \forall i \le n, a_i \le T\)\(a\)的解的组数
\(n \le m \le 10^9, T \le 10^5, n \times T \le S \le 10^{18}, m ? n \le 1000\)

Solution

转自
容斥,枚举前面多少个\(a\)超过了\(T\)的限制

\[Answer = \sum\limits_{i = 0}^n {(-1)^i \binom{n}{i} \binom{S - iT}{m}} \]

考虑上面容斥的式子用另一种组合意义来描述

  • \(S\)个位置,每个位置可以是\(0/1\),这些位置分成\(n + 1\)块,前n块每块有\(T\)个位置,最后一块有\(S - nT\)个位置,现在要选出\(m\)个位置来放\(1\),前面n块要求每一块中至少有一个\(1\),问方案数

此时这个容斥就相当于枚举前面有多少块是没有放1的,显然这式子也是成立的
考虑生成函数,前\(n\)块每一块的生成函数就是\((1 + x)^T ? 1\),最后一块的生成函数就是\((1 + x)^{S ? nT}\)
现在要求的就是多项式\(((1 + x)^T ? 1)^n (1 + x)^{S ? nT}\)\(x^m\)项系数

那么这个\(m ? n \le 1000\)该怎么用呢?
观察上面的多项式前面括号里的部分,发现它常数项是\(0\)
这也就意味着整个多项式\(0\)次到\(n - 1\)次的系数全是\(0\)
那么我们将这个多项式除以\(x^n\)
现在要求的就是$$[x^{m - n}]\frac{((1 + x)^T ? 1)^n (1 + x)^{S ? nT}}{x^n}$$

那么我们暴力用快速幂来做,每次乘完只保留\(x^{m ? n + 1}\)以下的项,除以\(x^n\)实际上就是在乘\(n\)次方之前将所有项左移一位
这样就在\((m ? n)^2 (\log n + \log(S ? nT))\)的时间内做完啦
还可以采用NTT优化(需要用任意模数NTT)



2019省选联合训练10 T2 K菌的游戏

link

Description

一棵有根树,满足每个点的标号小于其父亲的编号。初始时石子在根上,两人轮流向儿子移动,不能移动的输。计数。

Solution

设先手必胜的EOF为\(f(x)\)
满足\(f'(x) + \exp(f(x)) = \frac{1}{1 - x}\)
两边积分得\(f(x) + \int \exp(f(x)) dx = -ln(1 - x)\)
可以发现\(\int \exp(f(x)) dx\)就是先手必败的EOF,记其为\(g(x)\)

所以原式变为\( \begin{cases} f(x) + g(x) = -ln(1 - x) \ \ \ \ \ \ (1) \\ g(x) = \int \exp(f(x)) dx \ \ \ \ \ \ (2) \end{cases}\)
对(2)两边求导得\(g'(x) = \exp(f(x))\)
两边取ln得\(\ln(g'(x)) = f(x)\)
代入(1)得\(g(x) + \ln(g'(x)) = -\ln(1 - x)\)
两边exp得\(\exp(g(x)) g'(x) = \frac{1}{1 - x}\)
两边积分得\(\int \exp(g(x)) g'(x) dx = \int \frac{1}{1 - x} dx\)
\((\exp \cdot g)'(x) = \exp(g(x)) g'(x)\)可得\(\exp(g(x)) = \int \frac{1}{1 - x} dx\)
两边取ln得\(g(x) = \ln(\int \frac{1}{1 - x} dx + 1)\)
\(g(x) = \ln(\sum\limits_{i = 1}^{\infty} \frac{x^i}{i} + 1)\)



THUWC2018 Day2T2 sequence 七彩序列

Description

\(n\)种颜色的小球,第\(i\)种有\(a_i\)个,现在询问不存在任意一个非空前缀或者非空后缀满足\(n\)种颜色的小球出现的次数相同的排列的方案数对\(998244353\)取模
(比如112122111111不合法,因为前缀112122中,两种颜色都出现了3次)
\(n \le 100, a_i \le 20000\)

Solution

显然对后缀的要求可以转化为对前缀的要求
\(A = \min a_i, B = \max a_i\)
\(f_i\)为每种颜色都为\(i\)的只包含一个不合法位置(就是第\(n \times i\)位)的方案数
\(g_i\)为第\(j\)种颜色为\(a_j - A + i\)的只包含一个不合法位置(就是第\(\sum_{j = 1}^{n} {i + a_j - A}\)位)的方案数
显然有\(f_i = \frac{(in)!}{(i!)^k} - \sum\limits_{j = 1}^{i - 1} {f_j \frac{((i - j)n)!}{((i - j)!)^k}} - \sum\limits_{j = 1}^{i + A - B} {g_j \frac{(\sum\limits_{k = 1}^{n} {i - j + A - a_k})!}{\prod\limits_{k = 1}^{n} {(i - j + A - a_k)!}}}\)
\(g_i = \frac{(\sum\limits_{j = 1}^{n} {i + a_j - A})!}{\prod\limits_{j = 1}^{n} {(i + a_j - A)!}} - \sum\limits_{j = 1}^{i - 1} {g_j \frac{((i - j)n)!}{((i - j)!)^k}} - \sum\limits_{j = 1}^{i} {f_j \frac{(\sum\limits_{k = 1}^{n} {i - j + a_k - A})!}{\prod\limits_{k = 1}^{n} {(i - j + a_k - A)!}}}\)
不妨记\(u(i) = \begin{cases} 0 & i < 0 \\ \frac{(in)!}{(i!)^k} & i \ge 0 \end{cases}, v(i) = \begin{cases} 0 & i < B - A \\ \frac{(\sum\limits_{k = 1}^{n} {i + A - a_k})!}{\prod\limits_{k = 1}^{n} {(i + A - a_k)!}} & i \ge B - A \end{cases}, w(i) = \begin{cases} 0 & i < 0 \\ \frac{(\sum\limits_{j = 1}^{n} {i + a_j - A})!}{\prod\limits_{j = 1}^{n} {(i + a_j - A)!}} & i \ge 0 \end{cases}\)
上面的递推式可以简写为\(f_i = u(i) - \sum\limits_{j = 1}^{i - 1} {u(i - j) f_j} - \sum\limits_{j = 1}^{i - 1} {v(i - j) g_j}\)
\(g_i = w(i) - \sum\limits_{j = 1}^{i - 1} {u(i - j) g_j} - \sum\limits_{j = 1}^{i} {w(i - j) f_j}\)
这递推具有卷积形式,于是就可以愉快的分治FFT了
有一种特殊情况,当所以颜色的个数都一样时,\(g\)是没有用的,不要算
太懒了,不想写代码,我也不能保证以上做法是正确的



美丽的一道期望题

Description

\(n\)个点的图,每个点有一个点权\(w_i\),任意两个点之间都有\(\frac{1}{2}\)的概率相连,定义一个联通块的权值为这个联通块内最小的点权,定义一个图的权值为权值最大的联通块的权值,求图的期望权值
\(n \le 10^5\),对\(998244353\)取模

Solution

将期望转化为计数
将所有点权从小到大排序
\(f_i\)\(i\)个点的联通图的方案数
\(g_i\)\(i\)个点的所有情况的\((-1)^{联通块个数}\)之和
\(h_i\)为第\(i\)个点为它的联通块内最小的元素,它所在的联通块为权值最大的联通块的方案数

显然有\(f_0 = 0, f_i = 2^{\binom{i}{2}} - \sum\limits_{j = 1}^{i - 1} {\binom{i - 1}{j - 1} 2^{\binom{i - j}{2}} f_j}\)
\(g_0 = 1, g_i = -\sum\limits_{i = 1}^{n} {\binom{i - 1}{j - 1} f_j g_{i - j}}\)
考虑容斥,根据\(\sum\limits_{i = 0}^{k} \binom{k}{i} (-1)^i = [k = 0]\)
\(h_i = -\sum\limits_{j = 0}^{n - i} {\binom{n - i}{j} 2^{\binom{n - j}{2}} g_{j + 1}}\)

\(f, g\)可以直接分治FFT,\(h\)卷积一下就可以了,时间复杂度\(O(n log^2 n)\)

\(A = \sum\limits_{i = 0}^{\infty} {2^{\binom{i}{2}} x^i}\)
\(f\)求逆可得,也等于\(\ln A\)
\(g = \exp {-f} = \frac{1}{\exp f} = \frac{1}{A}\)
\(f, g\)均可求逆得,\(h\)再卷积一下
总得时间复杂度为\(O(n log n)\),复杂度优秀,只需要求逆,常数优秀



PKUWC2018 猎人杀

link

Description

给你\(n\)个球,每个球有个权重\(w_i\)?,每次加权随机扔掉一个球,求一号球是最后一个被扔出去的概率
\(\sum\limits_{i = 1}^{n} {w_i} \le 10^5, \forall i \in [1, n], w_i > 0\)

Solution

直接求会发现分母不一样,不好算
我们可以将模型转化,每次加权随机选择一个球,球可以重复被选,若这个球还在就把它扔掉,求一号球是最后一个被扔出去的概率
令全集为\(U\)\(sum(S) = \sum\limits_{i \in S}^{} {w_i}\),当前状态下被扔掉的球的集合为\(S\)
选到第\(i(i \notin S)\)个球的概率为\(p\),则\(p = \frac{sum(S)}{sum(U)} p + \frac{w_i}{sum(U)} \Rightarrow p = \frac{w_i}{sum(U) - sum(S)}\)
可以发现这与原题要求的概率相同,即这两个模型是等价的

接下来考虑容斥,枚举一定在一号球之后被扔掉的球的集合\(T\)

\[ans = \sum\limits_{T \subseteq U}^{} {(-1)^{|T|} \sum\limits_{i = 0}^{\infty} (1 - \frac{w_1 + sum(T)}{sum(U)})^i \frac{w_1}{sum(U)}} \]

\[= \sum\limits_{T \subseteq U}^{} {(-1)^{|T|} \frac{w_1}{w_1 + sum(T)}} \]

分治FFT计算类似于背包的部分即可
\(m = \sum\limits_{i = 1}^{n} {w_i}\),时间复杂度\(m \log^2 m\)
也可以手动展开\(\ln\),再\(\exp\)回去,时间复杂度为\(m \log m\)

Extention

用这个套路也可以解决UOJ#390. 【UNR #3】百鸽笼