EGF 练习题(近期总结 2024.3.6)
Luogu5401 珍珠
题意:有 \(n\) 个变量,取值范围均为 \([1,D]\) 中的整数。求有多少种取值方案,使得可以选出至少 \(m\) 对变量满足每对都相等。
\(1\le D\le 10^5,\space 0\le m\le n,\space 1\le n\le 10^9\)
注意到 \(D\) 很小,我们可以计算出个数为奇数的值最多 \(n-2m\) 个,偶数最少为 \(t=\max(0,D-n+2m)\)。设 \(g[i]\) 表示恰好 \(i\) 个值出现偶数次的方案数。
二项式反演,设 \(f[i]\) 表示钦定 \(i\) 个值出现偶数次的方案数。
因为是有标号算多重集,所以使用 EGF。对于每个值,钦定出现次数为偶数的 EGF 为 \(\sum\limits_{i=0} \dfrac{x^i+(-x)^i}{2i!}=\dfrac{e^x+e^{-x}}2\),不钦定的 EGF 为 \(e^x\)。
那么
直接 NTT,二项式反演用差卷积,时间 \(O(D(\log D+\log n))\)。记录
Luogu5850 calc(加强版)
题意:对于所有满足每个数是整数且 \(\in[1,k]\),两两互不相同的 \(a_{1...n}\),求 \(\prod_{i=1}^n a_i\) 的和,对 \(998244353\) 取模。这里给出 \(m\),需要对所有 \(n\in[1,m]\) 求解。
\(1\le m\le 5\times 10^5,\space m\le k<998244353\)
相当于 \(1,2,...,k\) 中选择 \(n\) 个数,求乘积之和,最后乘上 \(n!\)。
写成 OGF 的形式就是 \([x^n] \prod_{p=1}^k (1+px)\),我们要求的是这个东西。
考虑转 ln 再转 exp,为 \(\exp (\sum_{p=1}^k \ln(1+px))\)。
我们现在的算的就是形如 \(\ln(1+px)\) 这样的东西,暴力求解:
考虑对 \(p=1...k\) 对上式求和
考虑后面的部分 \(\sum_{p=1}^k p^i\) 的 EGF
时间复杂度 \(O(m\log m)\)。记录
Luogu5162 WD 与积木
题意:有 \(1...n\) 共 \(n\) 个数,分成若干个内部无序的集合,然后把这些集合有顺序地排列起来,每种可能的方案出现概率相等,求期望划分的集合个数,答案模 \(998244353\)。多测,有 \(T\) 组数据。
\(1\le T\le 10^5,\space 1\le n\le 10^5\)
分开两部分计算:方案数 和 所有方案中集合个数总和。
先算方案数,枚举集合个数 \(i\),由于有标号所以是 EGF。
单个集合的 EGF:\(\sum_{i=1} \frac{1}{i!} x^i=e^x-1\)
总方案数:
接下来算所有方案中集合个数总和:
预处理,时间 \(O(T+n\log n)\)。
loj6503 「雅礼集训 2018 Day4」Magic
题意:有 \(n\) 个格子和 \(m\) 种颜色,求满足下列条件的染色方案总数:
-
对于每个 \(i\in[1,m]\),恰好 \(a_i\) 个格子染上了颜色 \(i\)。
-
恰好有 \(k\) 对相邻格子染上了相同颜色。
答案对 \(998244353\) 取模。
\(m\le 2\times 10^4,\space 0\le k\le n\le 10^5,\space \sum\limits_{i=1}^m a_i=n\)
注意恰好,二项式反演。
\(k\) 对相邻格子颜色相同,相当于有 \(n-k\) 个极长相同颜色连续段。
考虑给每个颜色分配一些段,因为是多重集排列所以用 EGF。
颜色 \(c\) 的 EGF:$F_c(x)=\sum\limits_i \dfrac{a_c-1 \choose i-1}{i!} x^i $
然后分治卷积,时间 \(O(m\log m\log n)\)。