BZOJ4710: [Jsoi2011]分特产 组合数学 容斥原理
- 题意:把M堆特产分给N个同学,要求每个同学至少分到一种特产,共有多少种分法?
- 把A个球分给B个人的分法种数:(插板法,假设A个球互不相同,依次插入,然后除以全排列去重)
C(A,B+A)
- 把M堆特产分给N个同学分法总数(考虑每堆特产拿出来单独分)
∏c(mi,n)
- 然后因为题目要求每个同学至少分到一种特产,所以用到容斥原理
- 每个同学至少分到一种特产分法总数 = 没有要求时的分法总数 - 至少有一个同学没有分到特产的分法总数 + 至少有两个同学没有分到特产的分法总数 ……
- 先预处理出可能用到的C(I,J)的值,然后就乱搞了
- 代码:
#include <bits/stdc++.h>
#define nmax 2200
#define mod 1000000007 using namespace std;
typedef long long ll;
int n,m,in;
ll c[nmax][nmax]={};
ll x[nmax]; //x[i]表示把这些特产只分给i个学生 void pre(){ //a^b
for (int i=; i<nmax; i++) c[i][]=;
for (int i=; i<nmax; i++) {
for (int j=; j<i; j++) c[i][j]=(c[i-][j]+c[i-][j-])%mod;
c[i][i]=;
}
} int main(){
pre();
cin>>n>>m;
for (int j=; j<=n; j++) x[j]=;
for (int i=; i<m; i++) {
scanf("%d",&in);
for (int j=; j<=n; j++) { //枚举学生
x[j]*=c[in+j-][j-];
x[j]%=mod;
}
}
for (int j=; j<=n; j++) { x[j]*=c[n][n-j]; x[j]%=mod; }
//容斥原理
ll ans=;
for (int i=n; i>=; i--) {
if( (n-i)& ) ans-=x[i]; else ans+=x[i];
ans+=mod;
ans%=mod;
}
cout<<ans<<endl;
return ;
}
BZOJ4710: [Jsoi2011]分特产 组合数学 容斥原理的更多相关文章
- BZOJ4710 JSOI2011分特产(容斥原理+组合数学)
显然可以容斥去掉每人都不为空的限制.每种物品分配方式独立,各自算一个可重组合乘起来即可. #include<iostream> #include<cstdio> #includ ...
- 2019.02.09 bzoj4710: [Jsoi2011]分特产(容斥原理)
传送门 题意简述:有nnn个人,mmm种物品,给出每种物品的数量aia_iai,问每个人至少分得一个物品的方案数(n,m,每种物品数≤1000n,m,每种物品数\le1000n,m,每种物品数≤10 ...
- [BZOJ4710][JSOI2011]分特产(组合数+容斥原理)
4710: [Jsoi2011]分特产 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 395 Solved: 262[Submit][Status] ...
- 【BZOJ 4710】 4710: [Jsoi2011]分特产 (容斥原理)
4710: [Jsoi2011]分特产 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 99 Solved: 65 Description JYY 带 ...
- bzoj4710 [Jsoi2011]分特产(容斥)
4710: [Jsoi2011]分特产 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 814 Solved: 527[Submit][Status] ...
- bzoj4710: [Jsoi2011]分特产 组合+容斥
4710: [Jsoi2011]分特产 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 289 Solved: 198[Submit][Status] ...
- BZOJ4710: [Jsoi2011]分特产【组合数学+容斥】
Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望 ...
- bzoj千题计划273:bzoj4710: [Jsoi2011]分特产
http://www.lydsy.com/JudgeOnline/problem.php?id=4710 答案=总方案数-不合法方案数 f[i][j] 前i种特产分给j个人(可能有人没有分到特产)的总 ...
- Bzoj4710 [Jsoi2011]分特产
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 96 Solved: 62[Submit][Status][Discuss] Description ...
随机推荐
- toj 3761 Egg Problem (好题~~)
Egg Problem 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交: 22 测试通过: 7 描述 There is a very interest ...
- 生成JavaDoc文档
JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了.在简略介绍JavaDoc写法之后,再看一下在Intellij Idea 中如何将代码中的注释 ...
- Mysql数据库操作(命令行)
1 环境 树莓派: mysql: 2 指令 以下是从命令行中连接mysql服务器的简单实例: [root@host]# mysql -u root -p Enter password:****** ...
- ELK学习003:Elasticsearch启动常见问题
一.Caused by: java.lang.RuntimeException: can not run elasticsearch as root 这个错误,是因为使用root用户启动elastic ...
- 这个 Python 代码自动补全神器搞得我卧槽卧槽的
是时候跟你说说这个能让你撸代码撸得舒服得不要不要的神器了——kite. ! 简单来说,它是一款 IDE 的插件,能做到代码自动补全,可能你会说了,这有什么牛逼的?一般的编辑器不都有这个功能么 ...
- 贪心训练均分纸牌Noip2002
题目链接:https://www.luogu.com.cn/problem/P1031 题目描述 有N堆纸牌,编号分别为 1,2,…,N.每堆上有若干张,但纸牌总数必为N的倍数.可以在任一堆上取若干张 ...
- JavaScript中条件分支语句和循环语句的使用,用简洁的代码实现强大功能
if() else if() else() alert() 弹出警告框 prompt() 输入框,确定:返回输入信息:取消:返回null <!DOCTYPE html> <ht ...
- element-ui 和ivew-ui的table导出export纯前端(可用)
一.element-ui 1.安装依赖Element组件库中的el-table表格导出需要的主要是两个依赖:(xlsx 和 file-saver) npm install --save xlsx fi ...
- [20200103]GUID转换GUID_BASE64.txt
[20200103]GUID转换GUID_BASE64.txt --//最近在做一个项目优化,里面大量使用uuid.优缺点在链接:http://blog.itpub.net.x.y265/viewsp ...
- netty 的事件驱动
netty 是事件驱动的,这里面有两个含义,一是 netty 接收到 socket 数据后,会产生事件,事件在 pipeline 上传播,二是事件由特定的线程池处理. NioEventLoop 轮询网 ...