Description

一个有N个元素的集合有2N个不同子集(包含空集),现在要在这2N个集合中取出若干集合(至少一个),使得

它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数喔~)

Input

一行两个整数N,K

Output

一行为答案。

Sample Input

3 2

Sample Output

6

HINT

【样例说明】

假设原集合为{A,B,C}

则满足条件的方案为:{AB,ABC},{AC,ABC},{BC,ABC},{AB},{AC},{BC}

【数据说明】

对于100%的数据,1≤N≤1000000;0≤K≤N;

Sol

恰好xx的问题,很大几率是容斥。。。

冷静分析一下,我们现在假设钦定了K个数字作为交集的最终结果,那么包含这些数字数字组成的集合就可以随便选,这样的方案数是\(C(n,k)*(2^{2^{n-i}}-1)\)(这里空集是不合法的)。但是这样算出来的是“至少有K个”,我们要用容斥来处理一下,而且这里的方案是有序的,所以容斥系数是还要乘以组合数。具体地,恰好选j个的每个方案里面,都包含了\(C(j,i)\)个有i个的,要算入系数。

至此本题的解法就完了,但是有一个问题:\(2^{2^{n-i}}\)是不能快速幂的,所以我们用递推法,开始的时候\(t=1\),每循环一次,\(t=t*(t+2)\)。

Code

#include <cstdio>
#define ll long long
ll n,k,A,fac[1000005],ifc[1000005],inv[1000005],P=1000000007;
ll c(int x,int y){return 1ll*fac[x]*ifc[y]%P*ifc[x-y]%P;}
int main()
{
scanf("%lld%lld",&n,&k);
inv[1]=fac[0]=ifc[0]=fac[1]=ifc[1]=1;
for(int i=2;i<=n;i++) inv[i]=(P-(P/i)*inv[P%i])%P,fac[i]=fac[i-1]*i%P,ifc[i]=ifc[i-1]*inv[i]%P;
for(ll i=n,op=((n-k)&1)?-1:1,t=1;i>=k;i--) A=(A+P+op*c(i,k)*c(n,i)%P*t%P)%P,op=-op,t=t*(t+2)%P;
printf("%lld\n",A);
}

最新文章

  1. 编写轻量ajax组件01-对比webform平台上的各种实现方式
  2. ExtJs基础知识总结:Dom、IFrame和TreePanel、TabPanel(三)
  3. requireJS心得
  4. Android点击其他任意位置收起软键盘
  5. EXTJS 4.2 资料 控件之checkboxgroup的用法(静态数据)
  6. org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.
  7. 关于QuartusII中的文件加密
  8. win7访问xp共享访问不了
  9. TIMO后台管理系统-基于SpringBoot开发
  10. LeetCode算法题-Jewels and Stones(Java实现)
  11. Android单元测试之三:使用模拟框架模拟依赖
  12. 一脸懵逼学习Storm的搭建--(一个开源的分布式实时计算系统)
  13. ES5和ES6对象导出和导入(转载,待整理)
  14. spoj QTREE - Query on a tree(树链剖分+线段树单点更新,区间查询)
  15. php ajax返回无故刷新页面
  16. python笔记2-变量
  17. 学生信息管理 和ROM常见的操作
  18. DNS污染
  19. javascript _ajax 原理 初级
  20. File /data/binlog/mysql-bin.index&#39; not found (Errcode: 13)

热门文章

  1. 用python40行代码编写的计算器
  2. composer 的设计原理及其基本用法
  3. 并发模型(一)——Future模式
  4. leetcode378
  5. leetcode318
  6. ubuntu主目录下的中文文件夹名改回英文
  7. 【bzoj1479】[NOI2006]最大获利
  8. Windows下Memcached的安装配置方法
  9. 581. Shortest Unsorted Continuous Subarray连续数组中的递增异常情况
  10. jQuery基础教程-第8章-001Adding new global functions