ACM入门之容斥定理

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM入门之容斥定理相关的知识,希望对你有一定的参考价值。


看上图可能会很迷,我们直接看例题。
例题一:

很经典的容斥,我们可以用二进制枚举来枚举所有的集合。
对于每一个集合的正负号,就是该集合内的集合数。例如:

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
LL a[25],n,m,sum;
LL solve(LL n)

    LL sum=0;
    for(int i=1;i<(1<<m);i++)//注意从1开始
    
        LL temp=n,cnt=-1;
        for(int j=0;j<m;j++)
        
            if(i>>j&1)
            
                temp/=a[j],cnt=cnt*(-1);
            
        
        sum=sum+cnt*temp;
    
    return sum;

int main(void)

    cin>>n>>m;
    for(int i=0;i<m;i++) cin>>a[i];
    cout<<solve(n);
    return 0;

例题二:

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const int N=25;
LL l,r,n,a[N];
LL solve(LL x)

	LL sum=0;
	for(int i=1;i<(1<<n);i++)
	
		LL temp=x,cnt=-1;
		for(int j=0;j<n;j++)
		
			if((i>>j)&1==1) temp/=a[j],cnt=cnt*(-1);
		
		sum=sum+cnt*temp;
	
	return x-sum;

int main(void)

	cin>>l>>r>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	cout<<solve(r)-solve(l-1);
	return 0;

以上是关于ACM入门之容斥定理的主要内容,如果未能解决你的问题,请参考以下文章

hdu-1695 GCD---容斥定理

Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理)

hdu-3388 Coprime---容斥定理&&DFS版

HDU1796 How many integers can you find容斥定理

容斥定理表现形式

loj#6072 苹果树(折半搜索,矩阵树定理,容斥)