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 ...
随机推荐
- linux中目录处理命令
目录 mkdir cd pwd rmdir cp mv rm mkdir 解释 命令名称:mkdir 命令英文原意:make directories 命令所在路径:/bin/mkdir 执行权限:所有 ...
- C# 多线程之通过Timer开启线程的例子
本例通过Timer的tick()方法触发TimerCallback委托来开辟新的线程,线程中的具体工作通过一个静态方法作为参数给TimerCallback委托. using System; using ...
- MySQL之ERROR 1558 (HY000): Column count of mysql.user is wrong.解决方案
一.场景 我本想在MySQL5.7上执行下列语句创建一个新用户: CREATE USER "remote"@"%" IDENTIFIED BY "12 ...
- cesium1.65api版本贴地贴模型标绘工具效果(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- iOS开发 - 在SwiftUI中显示模态视图
在SwiftUI中显示模态视图 简介 这里教大家如何弹出一个简单的模态视图.分别有两个页面,ContentView和GCPresentedView,以下对应简称为A和B.我们要做的是在A视图中点击按钮 ...
- JAVA系统架构高并发解决方案 分布式缓存 分布式事务解决方案
JAVA系统架构高并发解决方案 分布式缓存 分布式事务解决方案
- .NET CORE(C#) WPF 重新设计Instagram
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF 重新设计Instagram 阅读导航 本文背景 代码实现 ...
- #《Essential C++》读书笔记# 第三章 泛型编程风格
基础知识 array与vector是连续存储空间,可以用指针的算术运算实现对容器的访问.list也是一个容器,不同的是,list的元素以一组指针相互链接(linked):前向(forward)指针指向 ...
- findContours()函数
函数原型 findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int m ...
- C# WPF简况(2/3)
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. C# WPF简况(2/3) 阅读导航 本文背景 代码实现 本文参考 1.本文背景 承接上文(C ...