「总结」容斥。二.反演原理 5.划分容斥

参考的$blogs$这篇

还有具体数学。

是斯特林反演了。

首先必要的是两类斯特林数。

在定义上很重要的区别就是第一类是划分排列,而第二类是划分组合。

性质上比较重要的就是第一类是将升降幂转化为通常幂,第二类则反之。

f(n)=∑k=0n{nk}g(k)?g(n)=∑k=0n(−1)n−k[nk]f(k)

$fr.$第一类斯特林数。

$$\left[\begin{array}{c}n\\k\end{array}\right]$$

$n$个元素划分为$k$个集合,每个集合内圆排列的方案数。

根据定义,枚举第$n$个元素是处于一个新的集合,还是处于之前某个集合中的某个元素的右侧,可以得到递推式:

$$\left[\begin{array}{c}n\\k\end{array}\right]=\left[\begin{array}{c}n-1\\k-1\end{array}\right]+(n-1)\left[\begin{array}{c}n-1\\k\end{array}\right]$$

性质1:

说过了第一类斯特林数是划分排列。

$$\sum\limits_{i=0}^{n}\left[\begin{array}{c}n\\i\end{array}\right]=n!$$

证明:排列唯一定义一个轮换,轮换唯一定义一个排列。

性质上比较重要的就是第一类是将升降幂转化为通常幂,第二类则反之。

性质2:

$$x^{\underline{n}}=\sum\limits_{i=0}^{n}(-1)^{n-i}\left[\begin{array}{c}n\\i\end{array}\right]x^i$$

归纳证明:

$$\begin{array}{rcl} \\ x^{\underline{n+1}}&=&(x-n)x^{\underline{n}}\\&=&x\sum\limits_{i=0}^{n}\begin{bmatrix}n\\i \end{bmatrix}(-1)^{n-i}x^{i}-n\sum\limits_{i=0}^{n}\begin{bmatrix}n\\i \end{bmatrix}(-1)^{n-i}x^{i}\\&=&\sum\limits_{i=0}^{n}\begin{bmatrix}n\\i \end{bmatrix}(-1)^{n-i}x^{i+1}+n\sum\limits_{i=1}^{n+1}\begin{bmatrix}n\\i \end{bmatrix}(-1)^{n-i+1}x^{i}\\&=&\sum\limits_{i=1}^{n+1}\begin{bmatrix}n\\i-1 \end{bmatrix}(-1)^{n-i+1}x^{i}+n\sum\limits_{i=1}^{n+1}\begin{bmatrix}n\\i \end{bmatrix}(-1)^{n-i+1}x^{i}\\&=&\sum\limits_{i=1}^{n+1}\left(\begin{bmatrix}n\\i-1 \end{bmatrix}+n\begin{bmatrix}n\\i \end{bmatrix}\right)(-1)^{n-i+1}x^i\\&=&\sum\limits_{i=1}^{n+1}\begin{bmatrix}n+1\\i \end{bmatrix}(-1)^{n+1-i}x^i\\&=&x^{\underline{n+1}}\\ \end{array}$$

性质3:

$$x^{\overline{n}}=\sum\limits_{i=0}^{n}\begin{bmatrix}n\\i\end{bmatrix}x^i$$

归纳证明:
$$\begin{array}{rcl}\\x^{\overline{n+1}}&=&(x+n)x^{\overline{n}}\\&=&(x+n)\sum\limits_{i=0}^{n}\begin{bmatrix}n\\i\end{bmatrix}x^i\\&=&\sum\limits_{i=1}^{n+1}\begin{bmatrix}n\\i-1

\end{bmatrix}x^i+n\sum\limits_{i=1}^{n+1}\begin{bmatrix}n\\i\end{bmatrix}x^i\\&=&\sum\limits_{i=1}^{n+1}\left(\begin{bmatrix}n\\i-1\end{bmatrix}+n\begin{bmatrix}n\\i\end{bmatrix}\right)x^i\\&=&\sum\limits_{i=1}^{n+1}\begin{bmatrix}n+1\\i\end{bmatrix}x^i\\&=&x^{\overline{n+1}}\ \end{array}$$

求第一类斯特林数:

利用性质3:

设母函数$f(x)^n=x^{\underline{n}}=\sum\limits_{i=0}^{n}a_ix^i$

那么求出的$a_i$其实就是一行的第一类斯特林数,考虑倍增$FFT$

$$f(x)^{2n}=f(x)^f(x+n)^n$$

当我们得到$f(x)^n$的时候考虑如何求出$f(x+n)^n

$$\begin{array}{rcl}f(x+n)^n&=&\sum\limits_{i=0}^{n}a_i(x+n)^i\\&=&\sum\limits_{i=0}^{n}a_i\sum\limits_{j=0}^{i}\binom{i}{j}x^j

n^{i-j}\\&=&\sum\limits_{i=0}^{n}x^i\sum\limits_{j=i}{n}\binom{j}{i}a_jn^{j-i}\\&=&\sum\limits_{i=0}^{n}x^i
i!\sum\limits_{j=i}{n}\frac{j!}{(j-i)!}n^{j-i}a_j\end{array}$$

后面是个卷积,直接$NTT$就完事。

倍增求解复杂度仍然为$O(nlogn)$

$se.$第二类斯特林数。

$$\begin{Bmatrix}n\\k\end{Bmatrix}$$

$n$个元素划分为$k$个集合的方案数。

根据定义,枚举第$n$个元素所在的集合,可以得到递推式:

$$\begin{Bmatrix}n\\k\end{Bmatrix}=\begin{Bmatrix}n-1\\k-1\end{Bmatrix}+k\begin{Bmatrix}n-1\\k\end{Bmatrix}$$

性质1:

$$k^n=\sum\limits_{i=0}^{k}\begin{Bmatrix}n\\i\end{Bmatrix}i!\binom{k}{i}=\sum\limits_{i=0}^{k}\begin{Bmatrix}n\\i\end{Bmatrix}k^{\underline{i}}$$

我们在$k$个集合中选择$i$个集合放入元素,然后全排列这些集合,得到的就是$n$个元素放入$k$个可空集合的方案数。

性质2:

说过了第二类斯特林数是划分组合。

考虑用组合数来表示斯特林数。

利用容斥原理即可,我们枚举$k$个集合中至少空的集合,并且将之除去排列,得到:

$$\begin{Bmatrix}n\\k\end{Bmatrix}=\frac{1}{k!}\sum\limits_{i=0}^{k}(-1)^i\binom{k}{i}(k-i)^n$$

是奇加偶减。

求第二类斯特林数:

利用性质2。

展开:

$$\begin{array}{rcl}\
\begin{Bmatrix}n\\k\end{Bmatrix}&=&\sum\limits_{i=0}^{k}(-1)^i\frac{1}{k!}\frac{k!}{i!(k-i)!}(k-i)^n\\&=&\sum\limits_{i=0}^{k}(-1)^i\frac{1}{i!}\frac{(k-i)^n}{(k-i)!}\end{array}$$

是卷积的形式,那么可以在$O(nlogn)$的复杂度内求出第$n$行斯特林数。

$th.$斯特林反演。

首先给出结论:

$$f(n)=\sum\limits_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}g(i) ->\
g(n)=\sum\limits_{i=0}^{n}\begin{bmatrix}n\\i\end{bmatrix}(-1)^{n-i}f(i)$$

两个引理:

$$x^{\underline{n}}=(-1)^n(-x)^{\overline{n}}$$

$$x^{\overline{n}}=(-1)^n(-x)^{\underline{n}}$$

只证明第一个:

证明:

$$\begin{array}{rcl}x^{\underline{n}}&=&(-1)^n\prod\limits_{i=0}^{n-1}(-(x-i))\\&=&(-1)^n(-1)^n\prod\limits_{i=0}^{n-1}(x-i)\\&=&x^{\underline{n}}\end{array}$$

两个反转公式:

$$\sum\limits_{i=m}^{n}\begin{bmatrix}n\\i\end{bmatrix}\begin{Bmatrix}i\\m\end{Bmatrix}=[m=n]$$

$$\sum\limits_{i=m}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}\begin{bmatrix}i\\m\end{bmatrix}=[m=n]$$

反转一证明:

由第一类斯特林数性质2和第二类斯特林数性质1得到:

$$\begin{array}{rcl}x^{\underline{n}}&=&\sum\limits_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}x^i\\&=&\sum\limits_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}\sum\limits_{j=0}^{i}\begin{Bmatrix}i\\j\end{Bmatrix}x^{\underline{j}}\ \end{array}$$

更换枚举顺序得到:

$$=\sum\limits_{i=0}^{n}x^{\underline{i}}\sum\limits_{j=i}^{n}(-1)^{n-j}\begin{bmatrix}n\\i\end{bmatrix}\begin{Bmatrix}j\\i\end{Bmatrix}$$

设$f(n,m)=\sum\limits_{i=m}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}\begin{Bmatrix}i\\m\end{Bmatrix}$

那么:

$$\begin{array}{rcl}&=&\sum\limits_{i=0}^{n}x^{\underline{i}}f(n,i)\\&=&x^{\underline{n}}\\&=&\sum\limits_{i=0}^{n}x^{\underline{i}}[n=i]\end{array}$$

所以:

$$f(n,m)=[n=m]$$

$$f(n,m)=[n=m]$$

$$f(n,m)=[n=m]$$

$$f(n,m)=[n=m]$$

$$f(n,m)=[n=m]$$

$$f(n,m)=[n=m]$$

$f$和反转公式一是相等的,得证。

然后反转二证明:

$$x^n=\sum\limits_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}(-1)^{i}x^{\underline{i}}$$

利用引理二:

$$\begin{array}{rcl}&=&\sum\limits_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}(-1)^i\sum\limits_{j=0}^{i}\begin{bmatrix}i\\j\end{bmatrix}(-1)^j(x)^j\\&=&\sum\limits_{i=0}^{n}x^j\sum\limits_{j=i}^{n}(-1)^{j-i}\begin{Bmatrix}n\\j\end{Bmatrix}\begin{bmatrix}j\\i\end{bmatrix}\end{array}$$

斯特林反演证明:

假设:

$$g(n)=\sum\limits_{i=0}^{n}(-1)^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}$$

$$\begin{array}{rcl}f(n)&=&\sum\limits_{i=0}^{n}[n=i]f(i)\\&=&\sum\limits_{i=0}^{n}\sum\limits_{j=i}^{n}(-1)^{n-j}\begin{Bmatrix}n\\j\end{Bmatrix}\begin{bmatrix}j\\i\end{bmatrix}f(i)\\&=&\sum\limits_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}\sum\limits_{j=0}^{i}\begin{bmatrix}i\\j\end{bmatrix}f(i)\\&=&\sum\limits_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}g(i)\ \end{array}$$

另一种至少形式:

$$f(m)=\sum\limits_{i=m}^{n}\begin{Bmatrix}i\\m\end{Bmatrix}g(i) ->\
g(m)=\sum\limits_{i=m}^{n}\begin{bmatrix}i\\m\end{bmatrix}(-1)^{i-m}g(i)$$

$fo.$相互再归的鹅妈妈。

与其说是斯特林反演不如说是系数构造容斥了。

根据某个斯特林数的性质设计容斥:

$$x^{\underline{n}}=\sum\limits_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}x^i$$

将$x=1$带入。

$$\sum\limits_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}=1^{\underline{n}}=[n=1]$$

因为下降幂再乘就乘到0了。

设集合$S$有$n$个元素,$S$的一种集合划分为$m$,记作$m\in S$,$m$中的集合个数称做$k$,每个集合的大小称作$a_i$。

考虑第一类斯特林数的意义,其实就是枚举每一种划分,然后将划分中的每个集合排序。

那么:

$$[n=1]=\sum\limits_{m\in S}(-1)^{n-k}\prod{i=1}^{k}(a_i-1)!=\sum\limits_{m\in S}\prod{i=1}^{k}(a_i-1)!(-1)^{a_i-1}$$

这就是题解写的那个式子了,俩月之前还理解不了呢。

假设我们已经求出可以重复的方案数。

我们把$n$集合划分,要求相同的数在同一集合,不同的在不同集合。

对于一个划分方案,我们发现它要满足的条件是:

$$\prod\limits_{i=1}^{k}[a_i=1]$$

也就是各不相同。

设一个容斥系数$f(m)$,总的被计算的方案就是:

$$\sum\limits_{m\in S}f(m)\prod\limits_{i=1}^{k}\begin{bmatrix}a_i\\1\end{bmatrix}$$

要求每个被计算的方案都满足:

$$\prod\limits_{i=1}^{k}[a_i=1]$$

那么:

$$f(m)=(-1)^{n-k}$$

设$dp[i]$为$i$个人可重复的方案数。

$$ans=\sum\limits_{m\in S}dp[k](-1)^{n-k}\prod\limits_{i=1}^{k}\begin{bmatrix}a_i\\1\end{bmatrix}=\sum\limits_{m\in S}dp[k]\prod\limits_{i=1}^{k}(a_i-1)!(-1)^{a_i-1}$$

现在考虑求$dp$数组。

首先考虑有序方案,最后除去$n!$即可。

枚举究竟在哪一位某个人开始与$R$不相同,这样得到了的人后面可以乱填,同时只需要留一个人来调和其他不为0的位置即可。

数位$dp$。

好久以前的题啊,终于还是解决掉了。

原文地址:https://www.cnblogs.com/Lrefrain/p/11673643.html

时间: 2024-10-09 09:22:00

「总结」容斥。二.反演原理 5.划分容斥的相关文章

「总结」容斥。二.反演原理

二.反演原理 0.综述 说一下个人对反演的理解. 反演是一种手段,一种处理已知信息和未知信息关系的手段,用来得到未知信息的方式.也就是以一种既定的手段在较小的时间复杂度内用已知的信息得到未知的信息. 还有$zsq$学长更加浅显的解读. 反演一般就是把一个好看但难算的式子转化成一个难看且难算的式子在转化为一个难看但好算的式子. 先来一个裸一点的反演 下面要说我知道的四种反演. 子集反演,针对的是集合交并的容斥. 二项式反演,针对组合原理的容斥. 莫比乌斯反演,针对约数和倍数的容斥. 斯特林反演,针

「kuangbin带你飞」专题十二 基础DP

layout: post title: 「kuangbin带你飞」专题十二 基础DP author: "luowentaoaa" catalog: true tags: mathjax: true - kuangbin - 动态规划 传送门 A.HDU1024 Max Sum Plus Plus 题意 给你N个数,然后你分成M个不重叠部分,并且这M个不重叠部分的和最大. 思路 动态规划最大m字段和,dp数组,dp[i][j]表示以a[j]结尾的,i个字段的最大和 两种情况:1.第a[j

「luogu3380」【模板】二逼平衡树(树套树)

「luogu3380」[模板]二逼平衡树(树套树) 传送门 我写的树套树--线段树套平衡树. 线段树上的每一个节点都是一棵 \(\text{FHQ Treap}\) ,然后我们就可以根据平衡树的基本操作以及线段树上区间信息可合并的性质来实现了,具体细节看代码都懂. 参考代码: #include <algorithm> #include <cstdlib> #include <cstdio> #define rg register #define file(x) freo

「BOI2007」Mokia

「BOI2007」Mokia 传送门 把查询拆成四部分然后容斥计算答案(二维前缀和) 然后 \(\text{CDQ}\) 分治算答案. 参考代码: #include <algorithm> #include <cstdio> #define rg register #define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w", std

大數據的「真面目」及其運用

大數據的定義 近年來,人們對「大數據」的關注度日益提高.這都歸因於麥肯錫全球研究院在2011年發布的研究報告.該報告認為人們即將迎來一個利用規模大到超出現有數據處理系統能力的巨量信息時代,並暗示戰略性地利用這些信息數據,就有可能產生巨大的商業機會. 那麼大數據到底是什麼呢?從字面來看,它指的是以現有信息處理技術無法應對的龐大信息量.而實際上,當我們將儲蓄了各種服務的使用信息數據與用戶的屬性信息相結合,並在這些信息數據發生時能夠全量獲取,就被稱做大數據. 典型的是互聯網服務的利用數據.另外還包括零

保障「舌尖」安全 大數據應用有錢「數」

兩會期間,空氣.水.食品安全等問題依然是關注熱點.針對食品安全風險如何把控的話題,昨日,全國政協委員嚴琦.全國政協委員杜惠平.全國政協委員彭靜等接受商報記者採訪時均建議,新的市場環境下,除了完善的制度體系建設,解決食品安全問題更需要藉助更新的技術和服務.而隨著移動互聯網.大數據等先進技術手段在食品安全領域的應用,配套建設誠信資料庫.移動APP等將迎來商機. 現狀 食品追溯體系 推廣率亟待提高 食品安全關係千家萬戶,保障「舌尖」安全目前還有哪些方面需要完善? 全國政協委員嚴琦表示,在2010年和2

「Luogu4321」随机游走

「Luogu4321」随机游走 题目描述 有一张 \(n\) 个点 \(m\) 条边的无向图,\(Q\) 组询问,每次询问给出一个出发点和一个点集 \(S\) ,求从出发点出发随机游走走遍这个点集的期望步数. \(1 \leq n \leq 18, 1 \leq Q \leq 10^5\) 解题思路 : 听说是 \(\text{pkuwc2018d2t3}\) 加强版?但是原题时限是1s,各种卡不进去感觉一定要写 \(\text{Min-Max}\) 容斥,不过反正我今年听指导建议没报 \(\t

Loj #2541「PKUWC2018」猎人杀

Loj #2541. 「PKUWC2018」猎人杀 题目链接 好巧妙的题! 游戏过程中,概率的分母一直在变化,所以就非常的不可做. 所以我们将问题转化一下:我们可以重复选择相同的猎人,只不过在一个猎人被选择了过后我们就给他打上标记,再次选择他的时候就无效.这样与原问题是等价的. 证明: 设\(sum=\sum_iw_i,kill=\sum_{i被杀死了}w_i\). 攻击到未被杀死的猎人\(i\)的概率为\(P\). 则根据题意\(P=\frac{w_i}{sum-kill}\). 问题转化后:

「Luogu2522」[HAOI2011]Problem b

「Luogu2522」[HAOI2011]Problem b problem Solution 题目要求 \[\sum_{x=a}^b\sum_{y=c}^d[gcd(x,y)=k]\] 设上式为\(Ans(a,b,c,d,k)\) 不妨来想一想\(a=1,c=1\)的时候怎么做 其实就跟「Luogu3455」[POI2007]ZAP-Queries一模一样了 略过一大堆式子,当\(a=c=1\)时 \[Ans(1,b,1,d,k)=\sum_{t=1}^{\frac{min(b,d)}{k}}