容斥原理 集合计数
来源:互联网 发布:如何看待网络直播 编辑:程序博客网 时间:2024/05/14 10:26
问题 J: 集合计数
时间限制: 1 Sec 内存限制: 128 MB
题目描述
一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得
它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数喔~)
输入
一行两个整数N,K
输出
一行为答案。
样例输入
3 2
样例输出
6
提示
【样例说明】
假设原集合为{A,B,C}
则满足条件的方案为:{AB,ABC},{AC,ABC},{BC,ABC},{AB},{AC},{BC}
【数据说明】
对于100%的数据,1≤N≤1000000;0≤K≤N;
当前集合的数量为2^n个。然后我们固定k个元素为交集,也就是这k个元素必选,集合数量还剩下2^(n-k)个。选择方案总数就是2^(2^(n-k))。再枚举k,总方案C(n,k)*2^(2^(n-k)),很明显会出现重复的情况。以此类推,有k+1个交集的情况就是C(n,k+1)*2(2^(n-k-1))把k+1的剪掉,把k+2的再加回来。。。但是注意要枚举是哪一部分重了。
最终方案是 C(n,k)*2^(2^(n-k))-C(n,k+1)*2^(2^(n-k-1))*C(k+1,k)+…..
阶乘预处理,逆元预处理,2^(2^a)==2((2^a)%phi(mod)-phi(mod))。2的幂%phi(mod)预处理。。。。就会很快了。
#include <cstdio>#include <cstdlib>#include <iostream>#include <algorithm>#include <cstring>#define p 1000000007#define N 1000000#define ll long longusing namespace std;int n,k;ll ans,a[N+5],b[N+5],xp[N+5];ll cheng(ll x,ll m){llans=1;for(;m;m>>=1,x=x*x%p)if(m&1)ans=ans*x%p;return ans;}ll C(int n,int m){return (a[n]*b[m]%p)*b[n-m]%p;}void init(){ a[0]=b[0]=xp[0]=1; for(ll i=1;i<=n;i++)a[i]=a[i-1]*i%p; for(int i=1;i<=n-k;i++)xp[i]=xp[i-1]*2ll%(p-1); b[n]=cheng(a[n],p-2); for(ll i=n-1;i>=1;i--)b[i]=b[i+1]*(i+1)%p;}int main(){ scanf("%d%d",&n,&k); init(); for(ll i=k,f=1;i<=n;i++,f=-f) ans=(ans+f*C(i,k)*cheng(2,xp[n-i])%p*C(n,i)%p+p)%p; printf("%lld\n",ans);}
阅读全文
0 0
- 容斥原理 集合计数
- BZOJ 2839 集合计数 容斥原理
- 【BZOJ2839】集合计数,容斥原理
- [容斥原理] BZOJ 2839 集合计数
- bzoj2839集合计数 容斥原理
- [容斥原理]BZOJ 2839: 集合计数
- bzoj 2839: 集合计数 (容斥原理)
- [BZOJ2839]集合计数(容斥原理+组合数学)
- bzoj 2839: 集合计数 排列组合+容斥原理
- bzoj2839 集合计数 (容斥原理+组合数)
- BZOJ 2839: 集合计数 容斥原理 组合数学
- Bzoj2839:集合计数:组合数学+容斥
- 【bzoj2839】【集合计数】容斥原理+线性求阶乘逆元小技巧
- UVA 1393 - Highways (容斥原理计数)
- hihoCoder1476 矩阵计数 容斥原理
- 容斥原理与多重集合
- 容斥原理与多重集合
- SCU2016-01 L 集合容斥原理
- L2-007. 家庭房产
- Linux Unit7
- Hadoop(二)
- ROS的初步学习(二)--使用Gazebo模拟器
- 浏览器 HTTP 协议缓存机制详解
- 容斥原理 集合计数
- Matlab GUI显示当前时间,定时器(timer)
- PHP发送GET或POST的6种方法
- DexExpress主题更改
- 如何理解java的接口举一个例子
- 基于Java语言框架SSM写的一个小博客
- ssh整合ajax提交表单中文乱码问题详解!
- 2006年培养学员8万人,每年增长25%,请问按照次增长速度,到哪一年培养学员人数将达到20万人?
- 数据库:Mysql中“select ... for update”排他锁分析