bzoj4710 [Jsoi2011]分特产(容斥)
4710: [Jsoi2011]分特产
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 814 Solved: 527
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 3 3 5
Sample Output
如果不保证每个同学都分到特产,那就比较好算
对于每种特产的数量$A_i$,我们求把它分成$n$个非负整数的方案数
先假装给每个非负整数+1,问题转化为把$A_i+n$分成$n$个正整数的方案数
用上熟悉的插板法,$A_i+n-1$个空,一个空最多插一次板,共插$n-1$次板,答案即为$C(A_i+n-1,n-1)$
蓝后考虑减去有同学没拿到特产的方案数
显然要用上熟悉的容斥原理辣:减去1个同学没拿到的方案,加上2个同学没拿到的方案,.........
于是最终$ans=\sum_{i=0}^{n}\; (-1)^i*C(n,i)*\; \prod_{j=1}^{m}\; C(A_i+n-j-1,n-j-1)$
#include<iostream>
#include<cstdio>
#include<cstring>
#define rint register int
using namespace std;
typedef long long ll;
#define N 2005
const ll P=1e9+;
inline ll Md(ll a){return a<P?a:a-P;}
int n,m;ll C[N][N],ans,A[N];
void prep(){
C[][]=;
for(rint i=;i<N;++i){
C[i][]=;
for(rint j=;j<=i;++j)
C[i][j]=Md(C[i-][j]+C[i-][j-]);
}
}
ll F(int x){
if(x==) return ;//注意边界
ll re=;
for(rint i=;i<=m;++i) re=re*C[A[i]+x-][x-]%P;
return re;
}
int main(){
scanf("%d%d",&n,&m); prep();
for(rint i=;i<=m;++i) scanf("%lld",&A[i]);
for(int i=;i<n;++i)
ans=Md((ans+1ll*((i&)?-:)*C[n][i]*F(n-i))%P+P);
printf("%lld",ans);
return ;
}
bzoj4710 [Jsoi2011]分特产(容斥)的更多相关文章
- BZOJ4710 [Jsoi2011]分特产 容斥
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4710 题解 本来想去找一个二项式反演的题的,结果被 https://www.cnblogs.c ...
- BZOJ 4710: [Jsoi2011]分特产(容斥)
传送门 解题思路 首先所有物品是一定要用完的,那么可以按照物品考虑,就是把每种物品分给\(n\)个人,每个人分得非负整数,可以用隔板法计算.设物品有\(m\)个,方案数为\(C(n+m-1,n-1)\ ...
- bzoj4710: [Jsoi2011]分特产 组合+容斥
4710: [Jsoi2011]分特产 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 289 Solved: 198[Submit][Status] ...
- [BZOJ4710][JSOI2011]分特产(组合数+容斥原理)
4710: [Jsoi2011]分特产 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 395 Solved: 262[Submit][Status] ...
- BZOJ4710: [Jsoi2011]分特产【组合数学+容斥】
Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望 ...
- Bzoj4710 [Jsoi2011]分特产
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 96 Solved: 62[Submit][Status][Discuss] Description ...
- BZOJ4710 JSOI2011分特产(容斥原理+组合数学)
显然可以容斥去掉每人都不为空的限制.每种物品分配方式独立,各自算一个可重组合乘起来即可. #include<iostream> #include<cstdio> #includ ...
- 2019.02.09 bzoj4710: [Jsoi2011]分特产(容斥原理)
传送门 题意简述:有nnn个人,mmm种物品,给出每种物品的数量aia_iai,问每个人至少分得一个物品的方案数(n,m,每种物品数≤1000n,m,每种物品数\le1000n,m,每种物品数≤10 ...
- bzoj千题计划273:bzoj4710: [Jsoi2011]分特产
http://www.lydsy.com/JudgeOnline/problem.php?id=4710 答案=总方案数-不合法方案数 f[i][j] 前i种特产分给j个人(可能有人没有分到特产)的总 ...
随机推荐
- C语言企业级的需要学习的知识
建立正确程序运行内存的布局图(印象图) 内存四区模型图: 函数调用模型图: 数据类型的本质:固定大小内存块的别名 对于数组变量b[10]; b+1,与&b+1结果不一样: b代表的是数组首元素 ...
- 移动端无法复制:使用clipboard.js碰到的一个小问题
移动端无法复制:使用clipboard.js碰到的一个小问题 直接看下面的代码:在移动端访问,点击,能正常复制. <html> <head> <meta http-e ...
- EL表达式JSTL
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据. 语法:${隐式对象名称}:获得对象的引用 序号 隐含对象名称 描 ...
- sqlmap常用渗透方法
0X001 适用场景 1.获取了Mysql数据库root账号以及密码. 2.可以访问3306端口以及数据库. 0X002 扫描获取root账号的密码 通常有下面一些方法来获取root账号的密码 (1) ...
- mint-ui笔记
1.安装: npm install mint-ui --save npm install babel-plugin-component --save-dev //(只引入部分组件时需要安装) 2.导入 ...
- 某平台实时数据录入js代码的修改坑点
在隐形内嵌函数使用的时候,很容易把这一点忘记了:内嵌函数不能修改外部函数的变量和参数 使用了mysql存储过程实现数据计算,导致高并发的时候数据库挂掉 mysql最大连接数调整到16384 之前为10 ...
- Xamarin.Forms FlexLayout 布局扩展+ 模板扩展+弹性换行
Binding a FlexLayout to a Collection In May we published a doc on the new FlexLayout control that’ ...
- Leetcode: Max Consecutive Ones II(unsolved locked problem)
Given a binary array, find the maximum number of consecutive 1s in this array if you can flip at mos ...
- linux----------启动network的时候报错Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
1.仔细阅读上面的话,意思是让你执行 journalctl -xe 查看更详细的日志. 2.我当时导致这个情况的原因是因为,虚拟机加载的文件被我换了位置,导致没加载到最原始的centos包.关闭虚拟 ...
- Zepto源码分析之二(新旧版本zepto.Z方法的区别)
在上一节中讲到Z()方法,是在初始化函数init中直接调用zepto.Z() zepto.Z = function(dom, selector) { dom = dom || [] dom.selec ...