4710: [Jsoi2011]分特产

题意:m种物品分给n个同学,每个同学至少有一个物品,求方案数


对于每种物品是独立的,就是分成n组可以为空,然后可以用乘法原理合起来

容斥容斥

\[每个同学至少一个=所有方案数-\ge 1个同学没有+\ge 2 个同学没有-...
\]

\(\ge i\)个同学没有,我们拿出来i个同学\(\binom{n}{i}\)个方案,剩下就是每种物品分成\(n-i\)组再乘起来罢了...



```cpp
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int N=5005, P=1e9+7;
inline int read(){
char c=getchar();int x=0,f=1;
while(c'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&cint n, m, c[N];

ll inv[N], fac[N], facInv[N];

inline ll C(int n, int m) {return fac[n]facInv[m]%P facInv[n-m]%P;}

inline ll f(int c, int n) {return C(n+c-1, n-1);}

void solve() {

ll ans=0;

for(int i=0; i<=n; i++) {

ll t=1;

for(int j=1; j<=m; j++) t=(t * f(c[j], n-i))%P;

t = t
C(n, i)%P;

(ans += (i&1) ? -t : t) %=P;

}

printf("%lld\n",(ans+P)%P);

}

int main() {

//freopen("in","r",stdin);

n=read(); m=read(); int lim=0;

for(int i=1; i<=m; i++) c[i]=read(), lim=max(lim, c[i]);

inv[1]=1; fac[0]=facInv[0]=1;

for(int i=1; i<=n+lim; i++) {

if(i!=1) inv[i] = (P-P/i)
inv[P%i]%P;

fac[i] = fac[i-1]i%P;

facInv[i] = facInv[i-1]
inv[i]%P;

}

solve();

}

BZOJ 4710: [Jsoi2011]分特产 [容斥原理]的更多相关文章

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

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

  2. ●BZOJ 4710 [Jsoi2011]分特产

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4710 题解: 容斥,组合先看看这个方案数的计算:把 M 个相同的东西分给 N 个人,每个人可 ...

  3. bzoj 4710: [Jsoi2011]分特产

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

  4. BZOJ 4710: [Jsoi2011]分特产(容斥)

    传送门 解题思路 首先所有物品是一定要用完的,那么可以按照物品考虑,就是把每种物品分给\(n\)个人,每个人分得非负整数,可以用隔板法计算.设物品有\(m\)个,方案数为\(C(n+m-1,n-1)\ ...

  5. 【BZOJ 4710】 4710: [Jsoi2011]分特产 (容斥原理)

    4710: [Jsoi2011]分特产 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 99  Solved: 65 Description JYY 带 ...

  6. 4710: [Jsoi2011]分特产

    4710: [Jsoi2011]分特产 链接 分析: 容斥原理+隔板法. 代码: #include<cstdio> #include<algorithm> #include&l ...

  7. 【bzoj4710】[Jsoi2011]分特产 容斥原理+组合数学

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

  8. [BZOJ4710][JSOI2011]分特产(组合数+容斥原理)

    4710: [Jsoi2011]分特产 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 395  Solved: 262[Submit][Status] ...

  9. bzoj4710 [Jsoi2011]分特产(容斥)

    4710: [Jsoi2011]分特产 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 814  Solved: 527[Submit][Status] ...

随机推荐

  1. Spring框架学习笔记(5)——自动装配

    1.通过bean标签的autowire属性可以实现bean属性的自动装配. 创建一个新的Spring配置文件beans-autowire.xml,这里我们配置了3个bean,Address.Car.P ...

  2. oracle创建触发器及作用举例

    --创建触发器及作用举例 create or replace trigger tri before delete on emp --在删除emp表数据之前需要做的事根据自己的业务去写,before是在 ...

  3. Java排序算法分析与实现:快排、冒泡排序、选择排序、插入排序、归并排序(二)

    一.概述: 上篇博客介绍了常见简单算法:冒泡排序.选择排序和插入排序.本文介绍高级排序算法:快速排序和归并排序.在开始介绍算法之前,首先介绍高级算法所需要的基础知识:划分.递归,并顺带介绍二分查找算法 ...

  4. FTP下载导致Zip解压失败的原因

    情形:网关通过FTP下载快钱对账文件时通过Apache下commons-net的commons-net-3.5.jar进行封装,对账文件中有中文和英文的文字,大部分情况下能够下载成功,而且也能解压成功 ...

  5. 机器学习——kNN(1)基本原理

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

  6. Django框架之正则表达式URL误区

    问题:我学习的视频大概是2015年录的,里面用的Django版本比较老关于正则表达式URL这一块都是用的url("url(r'^admin/', admin.site.urls)," ...

  7. [SinGuLaRiTy] NOIP2017 提高组

    [SinGuLaRiTy-1048] Copyright (c) SinGuLaRiTy 2018. All Rights Reserved. NOIP2017过了这么久,现在2018了才找到寒假这么 ...

  8. 浅谈linux虚拟内存结构

    一个虚拟存储器系统要求硬件和软件之间紧密写作(mmu(内存管理单元,虚拟地址到物理地址的翻译),TLB块表(虚拟地址到物理地址index,虚拟寻址),l1,l2,l3高速缓存(物理单元数据)物理寻址) ...

  9. JAVA BASE64

    Base64编码说明:     Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节, ...

  10. Dreamweaver cs6中文版完整安装步骤:

    Dreamweaver cs6中文版完整安装步骤: http://www.cr173.com/soft/72633.html 1.首先我们需要下载Dreamweaver cs6官方中文原版安装程序,下 ...