JSOI2011 分特产题解
[JSOI2011]分特产
题目描述
JYY 带队参加了若干场 ACM/ICPC\text{ACM/ICPC}ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们。
JYY 想知道,把这些特产分给 nnn 个同学,一共有多少种不同的分法?当然,JYY 不希望任何一个同学因为没有拿到特产而感到失落,所以每个同学都必须至少分得一个特产。
例如,JYY 带来了 222 袋麻花和 111 袋包子,分给 AAA 和 BBB 两位同学,那么共有 444 种不同的
分配方法:
AAA:麻花, BBB:麻花、包子
AAA:麻花、麻花, BBB:包子
AAA:包子, BBB:麻花、麻花
AAA:麻花、包子, BBB:麻花
输入格式
输入数据:
第一行是同学的数量 nnn 和特产的数量 mmm。
第二行包含 MMM 个整数,表示每一种特产的数量。
N,MN,MN,M 不超过 100010001000 ,每一种特产的数量不超过 100010001000
输出格式
输出一行,不同分配方案的总数。
由于输出结果可能非常巨大,你只需要输出最终结果
mod109+7\bmod {10^9+7}mod109+7 的数值就可以了。
样例 #1
样例输入 #1
5 4
1 3 3 5
样例输出 #1
384835
题意:
有nnn个有标号的盒子和mmm种有标号的球,每种球有a[i]a[i]a[i]个,求每个盒子至少放一种球的总方案数。
分析:
我们可以先考虑–把每个a[i]a[i]a[i]分到nnn个盒子里(允许有空盒)那么方案数为Cn+a[i]−1n−1\textrm{C}_{n+a[i]-1}^{n-1}Cn+a[i]−1n−1,
根据乘法原理方案数∏i=1mCn+a[i]−1n−1\prod^m_{i=1}\!C^{n-1}_{n+a[i]-1}∏i=1mCn+a[i]−1n−1 当然这样想使不完全正确的,其中包含有人没有的情况;
不合法的情况为K[i]K[i]K[i](iii表示至少有iii个盒子为空)(范围从iii到n−1n-1n−1,上一步求出必有一人有);
即我们要求出看k[x]= Cn+a[i]−1n−x−1\textrm{C}_{n+a[i]-1}^{n-x-1}Cn+a[i]−1n−x−1(也就是求出将a[i]a[i]a[i]个球放入n−xn-xn−x个盒子中);
但是因为k[i]⊆k[j](i<j)k[i]\!\subseteq\! k[j](i\!<\!j)k[i]⊆k[j](i<j)所以容斥一下;
∑i=0n−1(−1)i∏j=1mC(n+a[j]−i−1,n−i−1)\boxed{\sum^{n-1}_{i=0}(-1)^i\prod^m_{j=1}C(n\!+\!a[j]\!-\!i\!-\!1,n\!-\!i\!-\!1\!)}i=0∑n−1(−1)ij=1∏mC(n+a[j]−i−1,n−i−1)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+7;
ll n,m,te[1010],C[2010][2010];
int main()
{freopen("speciall.in","r",stdin);freopen("speciall.out","w",stdout);C[0][0]=1;for(int i=1;i<=2005;i++){C[i][0]=1;for(int j=1;j<=i;j++){C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;}}//预处理scanf("%lld%lld",&n,&m);for(int i=1;i<=m;i++){scanf("%lld",&te[i]);}ll ans=0;for(int i=0;i<n;i++){ll t=C[n][i];for(int j=1;j<=m;j++){t=t*C[te[j]+n-i-1][n-i-1]%mod;}if(i&1) ans=(ans-t+mod)%mod;else ans=(ans+mod+t)%mod;}printf("%lld",(ans+mod)%mod);
}//设数组g[i]表示 刚好 有i个同学没有土特产,显然g[0]就是答案//设f[i]表示 至少 有i个同学没有土特产,通过计算发现每个f[i]可能会重复计算g[i],以样例为例 //f[0]=g[0]+g[1]+g[2]+g[3]+g[4]//f[1]=g[1]+g[2]*2+g[3]*3+g[4]*4//f[2]=g[2]+g[3]*3+g[4]*6//f[3]=g[3]+g[4]*4//f[4]=g[4]//根据容斥原理得到公式: //ans=f[0] -f[1]+f[2]-f[3]+...+(-1)(n次方)f[n]
JSOI2011 分特产题解相关推荐
- BZOJ 4710 [Jsoi2011]分特产 解题报告
4710 [Jsoi2011]分特产 题意 给定\(n\)个集合,每个集合有相同的\(a_i\)个元素,不同的集合的元素不同.将所有的元素分给\(m\)个不同位置,要求每个位置至少有一个元素,求分配方 ...
- 【BZOJ4710】[JSOI2011]分特产(容斥)
[BZOJ4710]分特产(容斥) 题面 BZOJ 题解 比较简单吧... 设\(f[i]\)表示至多有\(i\)个人拿到东西的方案数. \(f[i]=\prod_{j=1}^m C_{m+i-1}^ ...
- BZOJ 4710: [Jsoi2011]分特产
传送门 见计数想容斥 发现所有同学至少有一个特产的限制不好搞 考虑设 $F[i]$ 表示 至少 有 $i$ 个同学没有特产的方案数 那么根据容斥原理答案就是 $F[0]-F[1]+F[2]-F[3]. ...
- bzoj 4710 [Jsoi2011]分特产 组合数学+容斥原理
题面 题目传送门 解法 考虑容斥原理 显然,我们可以枚举有多少个人没有收到 然后就转化成一个组合问题了 假设现在有\(x\)个物品,\(n\)个人,可以有人没有被分到,那么分给这\(n\)个人的方案数 ...
- CCF-CSP-202012-5 星际旅行 80分暴力题解
问题描述 试题编号: 202012-5 试题名称: 星际旅行 时间限制: 3.0s 内存限制: 512.0MB 问题描述: 题目描述乔帝要规划一次星际旅行,星际空间可以视为一个 3 维坐标系,乔帝有 ...
- [JSOI 2011]分特产
Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望 ...
- pat题解java,1039 到底买不买 (20分) Java题解 PAT (Basic Level) Practice (中文)- 巧妙开大数组减少代码量...
1039 到底买不买 (20分) 原题链接:传送门 一.题目: 输入样例 1: ppRYYGrrYBR2258 YrR8RrY 输出样例 1: Yes 8 输入样例 2: ppRYYGrrYB225 ...
- 第3章-21 判断回文字符串 (15分) PTA-python 题解 浙大版《Python 程序设计》题目集
致读者: 博主是一名数据科学与大数据专业大三的学生,一个互联网新人,这篇文章是记录我作为python助教总结的简单题解,写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很 ...
- 1080 MOOC期终成绩 (25 分) java 题解
题目描述: 对于在中国大学MOOC(http://www.icourse163.org/ )学习"数据结构"课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作 ...
最新文章
- dbc2000找不到服务器控制台,控制面板没有BDE Administrator(安装好DBC2000找不到)
- vim trick之 vimrc更改立即生效
- 【转】C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
- bzoj 5248: [2018多省省队联测]一双木棋
- aws中部署防火墙_如何在AWS中设置自动部署
- KubeEdge 实践过程的记录
- JAVA对象属性方法的使用
- 【TDA4系列】向 PSDKRA 添加新的图像传感器
- python计算图片的信源熵值(信息熵)
- hibernate4版本系列的官方下载地址
- 南京大学2021计算机考研复试线是多少,快讯!南京大学2021年考研复试线公布,金融专硕425分!...
- 安卓手机内外SD卡互换
- 【云和恩墨业务介绍】之数据库性能优化服务
- 网络协议-TCP和UDP最完整的区别介绍
- 首钢股份——超低排放排头兵
- 历史上十大著名思想实验
- Linux基础知识总结 一
- 关于Hadoop在java客户端进行下载时的异常java.io.FileNotFoundException: Hadoop home directory is no existed的解决办法
- 命令行错误提示--系统找不到指定的文件
- 天边一朵云-最终章动画化决定,看云卷云舒
热门文章
- 内容营销专家刘鑫炜:品牌没人知道啥办?如何快速推广自己的品牌
- 【游戏逆向】《某某仙侠传》验证码获取
- QQ/微信里被禁止访问的网页怎么处理 如何检测域名是否被微信封禁 屏蔽
- 中国云计算市场年终盘点:精彩依旧 未来可期
- 好系统重装工具告诉你无线路由器和宽带连接属性怎么设置
- iPad秒变生产力工具?在iPad上用vscode写代码搞开发【内网穿透】
- G4Studio行业应用二次快速开发平台简介 支持开源软件
- 《穷查理宝典:查理·芒格智慧箴言录》读书笔记
- “0x00446d22”指令引用的“0xcccd40d5”内存。该内存不能为read。
- html制作电影宣传效果,为你的网页做出电影的过场效果_html