[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=1m⁣Cn+a[i]−1n−1\prod^m_{i=1}\!C^{n-1}_{n+a[i]-1}∏i=1m​Cn+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∏m​C(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 分特产题解相关推荐

  1. BZOJ 4710 [Jsoi2011]分特产 解题报告

    4710 [Jsoi2011]分特产 题意 给定\(n\)个集合,每个集合有相同的\(a_i\)个元素,不同的集合的元素不同.将所有的元素分给\(m\)个不同位置,要求每个位置至少有一个元素,求分配方 ...

  2. 【BZOJ4710】[JSOI2011]分特产(容斥)

    [BZOJ4710]分特产(容斥) 题面 BZOJ 题解 比较简单吧... 设\(f[i]\)表示至多有\(i\)个人拿到东西的方案数. \(f[i]=\prod_{j=1}^m C_{m+i-1}^ ...

  3. BZOJ 4710: [Jsoi2011]分特产

    传送门 见计数想容斥 发现所有同学至少有一个特产的限制不好搞 考虑设 $F[i]$ 表示 至少 有 $i$ 个同学没有特产的方案数 那么根据容斥原理答案就是 $F[0]-F[1]+F[2]-F[3]. ...

  4. bzoj 4710 [Jsoi2011]分特产 组合数学+容斥原理

    题面 题目传送门 解法 考虑容斥原理 显然,我们可以枚举有多少个人没有收到 然后就转化成一个组合问题了 假设现在有\(x\)个物品,\(n\)个人,可以有人没有被分到,那么分给这\(n\)个人的方案数 ...

  5. CCF-CSP-202012-5 星际旅行 80分暴力题解

    问题描述 试题编号: 202012-5 试题名称: 星际旅行 时间限制: 3.0s 内存限制: 512.0MB 问题描述: 题目描述乔帝要规划一次星际旅行,星际空间可以视为一个 3 维坐标系,乔帝有 ...

  6. [JSOI 2011]分特产

    Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望 ...

  7. pat题解java,1039 到底买不买 (20分) Java题解 PAT (Basic Level) Practice (中文)- 巧妙开大数组减少代码量...

    1039 到底买不买 (20分) 原题链接:传送门 一.题目: 输入样例 1: ppRYYGrrYBR2258 YrR8RrY 输出样例 1: Yes 8 输入样例 2: ppRYYGrrYB225 ...

  8. 第3章-21 判断回文字符串 (15分) PTA-python 题解 浙大版《Python 程序设计》题目集

    致读者: 博主是一名数据科学与大数据专业大三的学生,一个互联网新人,这篇文章是记录我作为python助教总结的简单题解,写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很 ...

  9. 1080 MOOC期终成绩 (25 分) java 题解

    题目描述: 对于在中国大学MOOC(http://www.icourse163.org/ )学习"数据结构"课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作 ...

最新文章

  1. dbc2000找不到服务器控制台,控制面板没有BDE Administrator(安装好DBC2000找不到)
  2. vim trick之 vimrc更改立即生效
  3. 【转】C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
  4. bzoj 5248: [2018多省省队联测]一双木棋
  5. aws中部署防火墙_如何在AWS中设置自动部署
  6. KubeEdge 实践过程的记录
  7. JAVA对象属性方法的使用
  8. 【TDA4系列】向 PSDKRA 添加新的图像传感器
  9. python计算图片的信源熵值(信息熵)
  10. hibernate4版本系列的官方下载地址
  11. 南京大学2021计算机考研复试线是多少,快讯!南京大学2021年考研复试线公布,金融专硕425分!...
  12. 安卓手机内外SD卡互换
  13. 【云和恩墨业务介绍】之数据库性能优化服务
  14. 网络协议-TCP和UDP最完整的区别介绍
  15. 首钢股份——超低排放排头兵
  16. 历史上十大著名思想实验
  17. Linux基础知识总结 一
  18. 关于Hadoop在java客户端进行下载时的异常java.io.FileNotFoundException: Hadoop home directory is no existed的解决办法
  19. 命令行错误提示--系统找不到指定的文件
  20. 天边一朵云-最终章动画化决定,看云卷云舒

热门文章

  1. 内容营销专家刘鑫炜:品牌没人知道啥办?如何快速推广自己的品牌
  2. 【游戏逆向】《某某仙侠传》验证码获取
  3. QQ/微信里被禁止访问的网页怎么处理 如何检测域名是否被微信封禁 屏蔽
  4. 中国云计算市场年终盘点:精彩依旧 未来可期
  5. 好系统重装工具告诉你无线路由器和宽带连接属性怎么设置
  6. iPad秒变生产力工具?在iPad上用vscode写代码搞开发【内网穿透】
  7. G4Studio行业应用二次快速开发平台简介 支持开源软件
  8. 《穷查理宝典:查理·芒格智慧箴言录》读书笔记
  9. “0x00446d22”指令引用的“0xcccd40d5”内存。该内存不能为read。
  10. html制作电影宣传效果,为你的网页做出电影的过场效果_html