首页 > 其他分享 >容斥

容斥

时间:2022-11-22 00:12:20浏览次数:60  
标签:sum 元素 容斥 条件 binom aligned subseteq

妈的好难理解啊 QAQ

经典容斥

容斥模型:

设有一些元素及一些条件 \(U=\{p_1,p_2,\dots,p_n\}\)。

有一个函数 \(f\),\(f(S),S\subseteq U\) 表示至少满足 \(S\) 中的全部条件的元素的个数。

有一个函数 \(g\),\(g(n)\) 表示一个满足 \(n\) 个条件的元素对答案的贡献。

依据 \(g\) 有一个函数 \(h\) 表示我们计算出的容斥系数。

容斥原理就告诉我们答案为

\[\sum_{S\in U}f(S)h(|S|) \]

在这个式子中一个满足 \(n\ (n\geq 1)\) 个条件的元素对答案的贡献为(考虑它满足的条件集合怎么样被上式枚举)

\[\sum_{i=0}^n\binom{n}{i}h(i)=g(n) \]

这个隐性递归式可以帮助我们计算 \(h\),可以令 bot 在 \(O(n^2)\) 的时间开销下帮我们算容斥系数。

比如说我们需要计算至少满足一个条件的元素数量,那么就有

\[h(n)=[n\neq 0](-1)^{n-1} \]

证明,对于每个满足 \(0\) 个条件的元素,它们的贡献是 \(0\),对于每个满足 \(\geq 1\) 个条件的元素,它们的贡献是 \(1\)。

所以要有

\[g(n)=[n\neq 0] \]

这就要求

\[\sum_{i=0}^n\binom{n}{i}h(i)=[n\neq 0] \]

当 \(n=0\) 时得到 \(h(0)=0\),当 \(n\geq 1\) 时左边为

\[\begin{aligned} &\sum_{i=0}^n\binom{n}{i}h(i)\\ =&\sum_{i=1}^n\binom{n}{i}(-1)^{i-1}\\ =&-\Bigg(\sum_{i=1}^n\binom{n}{i}(-1)^{i}\Bigg)\\ =&-\Bigg(\bigg(\sum_{i=0}^n\binom{n}{i}(-1)^i\times1^{n-i}\bigg)-1\Bigg)\\ =&-\Bigg(\Big((-1)+1\Big)^n-1\Bigg)\\ =&\ 1 \end{aligned}\]

得证。

故满足至少一个条件的元素数量为

\[\sum_{S\subseteq U}[|S|\neq 0](-1)^{|S|-1}f(S) \]

如果是满足至少 \(k\) 个条件的元素数量那么也只需在前面令 \(g(n)=[n\geq k]\) 算容斥系数就好了。

同样可以证明不满足任何条件的元素数量为

\[\sum_{S\subseteq U}(-1)^{|S|}f(S) \]

有些时候我们会想求恰满足条件集合 \(T\) 的元素数量,感性理解一下,我们把 \(T\) 定义为 \(\emptyset\),把 \(U\) 定义为所有 \(T\) 的超集,那么这个问题就转化成求不满足任何条件的元素数,也就是

\[\sum_{T\subseteq S\subseteq U}(-1)^{|S|-|T|}f(S) \]

令元素为所有的字符排列,条件集合是 \(\{可以匹配 s_1,可以匹配 s_2,\dots,可以匹配 s_n\}\) 答案是

\[\begin{aligned} &\sum_{|T|=k}\sum_{T\subseteq S\subseteq U}(-1)^{|S|-k}f(S)\\ =&\sum_{S\subseteq U,|S|\geq k}\sum_{S\subseteq T,|S|=k}(-1)^{|S|-k}f(S)\\ =&\sum_{S\subseteq U,|S|\geq k}\binom{|S|}{k}(-1)^{|S|-k}f(S)\\ \end{aligned}\]

\(f(S)\) 是容易算的,指定需要匹配的串后如果有冲突为 \(0\),否则为 \(26^c\),\(c\) 是所有串的该位置都是 ? 的位置数。

\(O(n|s|)\) 暴力算 \(f(S)\),时间复杂度 \(O(2^nn|s|)\)。

接下来是经典的错排问题。令 \(F(n)\) 表示长度为 \(n\) 的错排数,我们置条件集合为 \(\{a_1=1,a_2=2,\dots,a_n=n\}\),元素即为 \(n!\) 个不同的排列,那么不满足任何条件的元素向答案贡献 \(1\),否则贡献 \(0\),就可以直接套用上面的方法。

\[\begin{aligned} F(n)&=\sum_{S\subseteq U}(-1)^{|S|}f(S)\\ \end{aligned}\]

我们尝试枚举这些条件,我们发现至少满足 \(k\) 个条件的元素数即至少有 \(k\) 个位置没有错排的排列数为

\[\binom{n}{k}(n-k)! \]

即选 \(k\) 个位置不错排,剩下位置任意。

然而这个东西就等同于

\[\sum_{|S|=k}f(S) \]

故我们可以根据这些条件集合大小枚举它们

\[\begin{aligned} F(n)&=\sum_{S\subseteq U}(-1)^{|S|}f(S)\\ &=\sum_{i=0}^n\sum_{|S|=i}(-1)^{i}f(S)\\ &=\sum_{i=0}^n(-1)^{i}\sum_{|S|=i}f(S)\\ &=\sum_{i=0}^n(-1)^{i}\binom{n}{i}(n-i)! \end{aligned}\]

标签:sum,元素,容斥,条件,binom,aligned,subseteq
From: https://www.cnblogs.com/yukari1735/p/16913859.html

相关文章

  • 容斥原理 & 莫比乌斯反演
    tobefix:“扩展”部分的式子是假的二维子集反演莫比乌斯反演容斥原理&莫比乌斯反演一、函数卷积:定义函数卷积\(f(x,y)\)和\(g(x,y)\)是\(X\timesX\ri......
  • 【CF1750F】Majority(容斥+DP)
    题目链接规定一个\(01\)串\(s\)是好的,当且仅当可以经过若干次下面的操作将它变成全\(1\):选择一对\(i,j\)满足\(s_i=s_j=1\)且\(\sum_{k=i}^js_k\ge\frac{j-i+1......
  • [AGC041F] Histogram Rooks(神仙题 网格 容斥计数)
    [AGC041F]HistogramRooks给定一个\(N\)行\(N\)列的棋盘,第\(i\)行只有\([1,h_i]\)是有格子的,其他都是虚空。一个棋子放在一个格子上,我们称一个格子被一个棋子......
  • CodeTON Round 3 (C.差分维护,D.容斥原理)
    C.ComplementaryXOR题目大意:给你两个01串ab,问你是否可以通过一下两种操作在不超过n+5次的前提下将两个串都变为0,同时需要输出可以的操作方案选择一个区间[l,r]将......
  • 【十二省联考2019】希望(容斥,换根DP,长链剖分,懒标记)
    暴力的想法是考虑钦定每个点作为到达点并统计贡献,但显然这样会算重。注意到会算重的到达点一定构成了一个连通块,这是一个很好的性质,方便了我们容斥:我们直接用点的贡献减去......
  • 【XSY3997】方格计数(容斥,dp)
    题面方格计数题解拼命容斥即可。先考虑\(k=0\)的情况。首先先对对角线的限制容斥,即用“没有限制-正对角线没选-反对角线没选+正反对角线都没选”。设\(Z\)中对角......
  • 【XSY3804】QQ数(莫比乌斯函数,容斥)
    题面题解明显地,这个QQ数可以用\(\mu\)表示,于是询问就变成了这样:\[\begin{aligned}&\sum_{i=1}^n\sum_{d|i}\left(1-\mu(d)^2\right)\\=&\sum_{d=1}^n\left\lfloo......
  • 【HNOI2015】实验比较(树形DP,容斥)
    题意:给你一棵树,你要对所有节点定一个顺序序列,形如\(p_1\oplus_1p_2\oplus_2p_3\cdotsp_{n-1}\oplus_{n-1}p_n\),其中\(\oplus_i\)为\(=\)或\(<\),\(p_{1\simn}......
  • 【CTS2019】珍珠(计数,容斥,NTT)
    题意:称一个长度为\(n\),值域为\([1,D]\)整数序列为合法序列,当且仅当序列中能选出\(m\)对数相等。问合法序列数。\(1\leqD\leq10^5,1\leqn,m\leq10^9\)。题解:设......
  • 【CFgym102870J】Junction of Orz Pandas(思维,容斥)
    暴力做法就不会做……考虑容斥,用所有数\(\leqa_i\)的方案减去所有数\(<a_i\)的方案得到最大值为\(a_i\)的方案,\(b_i\)同理容斥,时间复杂度\(O(2^{n+m}nm)\)。直......