bzoj 2839: 集合计数【容斥原理+组合数学】
首先,考虑容斥,我们所要的答案是并集至少有\( k \)个数的方案数减去并集至少有\( k+1 \)个数的方案数加上并集至少有\( k \)个数的方案数……
在n个数中选i个的方案数是\( C_{n}^{i} \),n种集合的组合方案数为\( 2^n \)
并集至少有i个元素的方案数即为选\( i \)个元素的方案数\( C_{n}^{i} \),乘上剩下\( n-i \)个元素任意组合的方案数\( 2{2{n-i}-1} \)
然后乘上容斥系数\( (-1)^{i-k} \),再乘上在并集的\( i \)个元素中选择\( k \)个元素的方案数\( C_{i}^{k} \)
答案即为:\( ans=\sum_{i=k}{i<=n}(-1){i-k}*C_{n}{i}*C_{i}{k}*2{2{n-i}-1} \),ans可能为负数,记得最后\( ans=(ans\%mod+mod)\%mod \)
#include<iostream>
#include<cstdio>
using namespace std;
const long long mod=1e9+7,N=1000005;
long long n,k,inv[N],fac[N],ans;
long long ksm(long long a,long long b)
{
long long r=1ll;
while(b)
{
if(b&1)
r=r*a%mod;
a=a*a%mod;
b>>=1;
}
return r;
}
long long C(long long n,long long m)
{
return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
int main()
{
scanf("%lld%lld",&n,&k);
fac[0]=1;
for(long long i=1;i<=n;i++)
fac[i]=fac[i-1]*i%mod;//,cout<<fac[i]<<" ";
inv[n]=ksm(fac[n],mod-2);
for(long long i=n-1;i>=0;i--)
inv[i]=inv[i+1]*(i+1)%mod;//,cout<<inv[i]<<endl;;
for(long long i=n,b=2;i>=k;i--,b=b*b%mod)
ans=(ans+((((i-k)&1)?-1:1)*C(n,i)%mod*C(i,k)%mod*(b+mod-1)%mod))%mod;
printf("%lld",(ans%mod+mod)%mod);
return 0;
}
bzoj 2839: 集合计数【容斥原理+组合数学】的更多相关文章
- BZOJ 2839: 集合计数 [容斥原理 组合]
2839: 集合计数 题意:n个元素的集合,选出若干子集使得交集大小为k,求方案数 先选出k个\(\binom{n}{k}\),剩下选出一些集合交集为空集 考虑容斥 \[ 交集为\emptyset = ...
- bzoj 2839 : 集合计数 容斥原理
因为要在n个里面选k个,所以我们先枚举选的是哪$k$个,方案数为$C_{n}^k$ 确定选哪k个之后就需要算出集合交集正为好这$k$个的方案数,考虑用容斥原理. 我们还剩下$n-k$个元素,交集至少为 ...
- BZOJ 2839: 集合计数 解题报告
BZOJ 2839: 集合计数 Description 一个有\(N\)个元素的集合有\(2^N\)个不同子集(包含空集),现在要在这\(2^N\)个集合中取出若干集合(至少一个),使得 它们的交集的 ...
- Bzoj 2839 集合计数 题解
2839: 集合计数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 495 Solved: 271[Submit][Status][Discuss] ...
- ●BZOJ 2839 集合计数
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2839 题解: 容斥原理 真的是神题!!! 定义 f[k] 表示交集大小至少为 k时的方案数怎 ...
- bzoj 2839 集合计数 容斥\广义容斥
LINK:集合计数 容斥简单题 却引出我对广义容斥的深思. 一直以来我都不理解广义容斥是为什么 在什么情况下使用. 给一张图: 这张图想要表达的意思就是这道题目的意思 而求的东西也和题目一致. 特点: ...
- [BZOJ 2839]集合计数
Description 题库链接 有 \(2^n\) 个集合,每个集合只包含 \([1,n]\) ,且这些集合两两不同.问有多少种选择方法(至少选一个),使得这些集合交集大小为 \(k\) . \(0 ...
- bzoj 2839 集合计数——二项式反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2839 设 \( g(i) \) 表示至少有 i 个, \( f(i) \) 表示恰好有 i ...
- bzoj 2839 集合计数 —— 二项式反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2839 设 \( f(i) \) 为至少 \( i \) 个选择,则 \( f(i) = C_ ...
随机推荐
- JavaScript高级程序设计重点(一)
1.一个完整的 JavaScript 实现应该由下列三 个不同的部分组成 核心(ECMAScript) 文档对象模型(DOM) 浏览器对象模型(BOM) 2.Undefined 类型只有一 ...
- maven pom.xml文件介绍
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Atom替换换行符
直接[Ctrl]+[F],然后选择正则,输入\n
- Java子类重写父类方法注意问题收集(转)
子类不能重写父类的静态方法,私有方法.即使你看到子类中存在貌似是重写的父类的静态方法或者私有方法,编译是没有问题的,但那其实是你重新又定义的方法,不是重写.具体有关重写父类方法的规则如下: 重写规则之 ...
- 关于MySQL的boolean和tinyint(1)
原文:http://blog.csdn.net/woshixuye/article/details/7089508 MySQL保存boolean值时用1代表TRUE,0代表FALSE.boolean在 ...
- java.util.MissingResourceException: Can't find resource for bundle oracle.sysman.db.rsc.LoginResourc
http://blog.itpub.net/197458/viewspace-1055358/ oracle 10.2.0.4 windows 2003 X64 平台 系统安装EMCA正常.第一次 ...
- SharePoint 2013 调查问卷的使用方法
SharePoint 2013 调查问卷的使用方法 1,介绍调查问卷的用法. 2.图形和全部结果. 3,控制用户仅仅能看到自己答案. 1.确认有权限,假设没有管理管理权限请向管理员申请. 站点&quo ...
- Windows驱动程序开发基础(四)驱动的编译调试和安装
Windows驱动程序开发基础,转载标明出处:http://blog.csdn.net/ikerpeng/article/details/38793995 以下说一下开发出来驱动程序以后怎样编译.一般 ...
- 2012年公司组织旅游西安线个人记录(repost)
2012年公司组织旅游西安线个人记录 文件夹 [隐藏] 1 序言 2 第1天 3 第2天 4 第3天 5 第4天 6 第5天 [title=2012%E5%B9%B4%E5%85%AC%E5%8F% ...
- [转] logback logback.xml常用配置详解(一)<configuration> and <logger>
转载文章:原文出处:http://aub.iteye.com/blog/1101260 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 根节点< ...