• 容斥


    设$A_1,A_2,...,A_n$为$n$个性质, $N_k=sumlimits_{1le i_1<i_2<...<i_kle n}|A_{i_1}A_{i_2}...A_{i_k}|$

    其中$|A_{i_1}A_{i_2}...A_{i_k}|$就表示$A_{i_1},...,A_{i_k}$一定满足, 其余任意的方案数

    也就是说$N_k$就为至少满足$k$个性质的方案数

    如果$A_i$具有对称性的话, 那么$N_k=inom{n}{k}|A_1A_2...A_k|$

    问题1: 求至少满足一个性质的方案数

    $$|A_1cup A_2 cup...cup A_n|=sumlimits_{i=1}^n(-1)^{i-1}N_i $$

    证明很容易, 因为对于每个恰好具有$k$个性质的元素, 它被统计的次数为

    $$sumlimits_{i=1}^k(-1)^{i-1}inom{k}{i}=1$$

    从另一个角度考虑, 假设$|A_1 cup...cup A_n|=sumlimits_{i=1}^n f_i N_i$, 其中$f_i$为容斥系数

    那么对于恰好$k$个性质的元素, 出现次数为$sumlimits_{i=1}^k inom{k}{i}f_i =1$

    也就等价于$f_k=1-sumlimits_{i=1}^{k-1}inom{k}{i}f_i$, 初始条件$f_1=1$

    可以推出$f_i=(-1)^{i-1}$, 这样就从另一个角度推出了容斥公式

    例1: 有一个$1 imes n$的格子, 一共有$m$种颜色, 每个格子要染一种, 颜色$1$至少要用一次, 求方案数.

    答案很容易得到, 用不成立的方案减一下即可, 也就是$m^n-(m-1)^n$. 我们考虑利用容斥来做.

    设性质$A_i$表示第$i$格为颜色$1$. 那么可以得到$N_k=inom{n}{k}|A_1A_2...A_k|=inom{n}{k}m^{n-k}$

    所以$ans=sumlimits_{i=1}^n (-1)^{i-1} inom{n}{i}m^{n-i}=m^n-(m-1)^n$

    可以发现和最初得到的答案是一致的

    问题2: 求恰好具有$x$个性质的方案数

    设$E(x)$表示恰好具有$x$个性质的方案数.

    按照上面的经验, 设$E(x)=sumlimits_{i=x}^n f_i N_i$

    对于恰好$k$个元素的方案数为$sumlimits_{i=x}^{k}f_i inom{k}{i}=[k=x]$

    当$k=x$时, $f_k=1$

    当$k>x$时, $f_k=-sumlimits_{i=x}^{k-1}f_i inom{k}{i}=(-1)^{k-x}inom{k}{x}$

    也就得到

    $$E(x)=sumlimits_{i=x}^n (-1)^{i-x}inom{i}{x}N_i$$

    当$x$取$0$时, 就得到不满足任意性质的方案为$sumlimits_{i=0}^n(-1)^i N_i$, 其中$N_0$为总的方案数

    例2: $n$个格子, $m$种颜色, 求每种颜色至少出现的方案数.

    记$A_i$表示第$i$种颜色不出现, $N_i=inom{m}{i}(m-i)^n, ans=sumlimits_{i=0}^m (-1)^iinom{m}{i} (m-i)^n$

    问题3: 求至少满足$x$个性质的方案数.

    利用问题2的结论可以得到

    $$sumlimits_{i=x}^nE(i)=sumlimits_{i=x}^n Bigg(sumlimits_{j=x}^i(-1)^{i-j}inom{i}{j} Bigg) N_i$$

    线性求阶乘逆元

    int fac[N], ifac[N];
    void init() {
    	fac[0]=1;
    	REP(i,1,N-1) fac[i]=(ll)fac[i-1]*i%P;
    	ifac[N-1] = qpow(fac[N-1],P-2);
    	PER(i,1,N-1) ifac[i-1]=(ll)ifac[i]*i%P;
    }
    

    1. CF 998E Sky Full of Stars 

    n*n棋盘, 三种颜色, 每个格子必须染成其中一种, 求至少有一行或一列同色的方案数. (n<=1e6)

    设$f(i,j)$固定$i$行$j$列必须同色其余任意的方案数. 只固定行或列的情况下, 每行或每列颜色颜色可以不同, 否则的话因为有交叉, 整个连通块必须同色, 可以得到

    $$f(i,j) =   egin{cases} 3^{n(n-i-j)+i+j},  & ext{$i=0$或$j=0$} \ 3^{(n-i)(n-j)+1}, & ext{其它} end{cases}$$

    由容斥可以得到$ans=sumlimits_{substack{0le ile n \ 0le j le n\i+j>0}}(-1)^{i+j-1}inom{n}{i}inom{n}{j}f(i,j)$

    对于$i=0$或$j=0$的情况直接$O(n)$即可求出, 考虑$i>0$且$j>0$的情况, 有

    $egin{align} otag ans & =sumlimits_{substack{1le ile n \ 1le j le n}}(-1)^{i+j-1}inom{n}{i}inom{n}{j}3^{(n-i)(n-j)+1} \ & =  sumlimits_{i=1}^nBigg((-1)^{i+1}inom{n}{i}3^{n^2-ni+1}sumlimits_{j=1}^n(-1)^jinom{n}{j}3^{(i-n)j}Bigg) otag \ & = sumlimits_{i=1}^nBigg((-1)^{i+1}inom{n}{i}3^{n^2-ni+1}((1-3^{i-n})^n-1)Bigg) otag end{align}$

    可以线性求出.

    2. hdu 6314

    n*m棋盘, 每个格子染成黑或白, 求至少x行,y列全为黑色的方案数.

  • 相关阅读:
    ReLU激活函数:简单之美
    逻辑回归(Logistic Regression)推导
    机器学习之视频推荐
    TensorFlow OOM when allocating tensor with shape[5000,384707]
    工银亚洲账户激活
    微信小程序之多行文本省略号
    关于微信小程序:scroll-view,backgroundTextStyle
    css之box-sizing属性(css3中的新属性)
    css之max-width属性
    css中的display属性之li元素
  • 原文地址:https://www.cnblogs.com/uid001/p/10929163.html
Copyright © 2020-2023  润新知