有 $n$ 个人,$m$ 种物品,每种物品有 $a_i$ 个,求每个人至少分到一个的方案数

$n,m,a_i \leq 2000$

sol:

比上一个题简单一点

还是考虑容斥

每个人至少分到一个 = 随便选 - 至少 1 个人没分到 + 至少 2 个人没分到 - 至少 3 个人没分到 + ...

至少 $i$ 个人没分到就是选出 $i$ 个人分不到,然后对于每种物品,要把它分给剩下的 $(n-i)$ 个人,注意到物品间是相同的,人是不同的,插板就可以了

最后答案是 $\sum\limits_{i=1}^n (-1)^i \times C_{n}^i \times \prod\limits_{j=1}^m C_{a_j+n-i-1}^{n-i-1}$

#include<bits/stdc++.h>
#define LL long long
using namespace std;
inline int read()
{
int x = ,f = ;char ch = getchar();
for(;!isdigit(ch);ch = getchar())if(ch == '-') f = -f;
for(;isdigit(ch);ch = getchar())x = * x + ch - '';
return x * f;
}
const int mod = ,maxn = + ;
int n,m,a[maxn];
int fac[maxn],ifac[maxn];
inline int ksm(int x,int t)
{
int res = ;
while(t)
{
if(t & )res = 1LL * res * x % mod;
x = 1LL * x * x % mod;
t = t >> ;
}return res;
}
inline int C(int n,int m)
{
if(n < || m < || n < m)return ;
return (((1LL * ifac[m] * ifac[n - m]) % mod) * fac[n]) % mod;
}
int main()
{
ifac[] = fac[] = ;for(int i=;i<=maxn-;i++)fac[i] = (1LL * fac[i - ] * i) % mod;
ifac[maxn - ] = ksm(fac[maxn - ],mod - );for(int i=maxn-;~i;i--)ifac[i] = (1LL * ifac[i + ] * (i + )) % mod;
//cout<<1LL * ifac[6] * fac[6]<<endl;
n = read(),m = read();
for(int i=;i<=m;i++)a[i] = read();
int ans = ;
for(int i=;i<n;i++)
{
int tmp = C(n,i);
for(int j=;j<=m;j++)
tmp = 1LL * tmp * C(n - i - + a[j],a[j]) % mod;
//cout<<tmp<<endl;
(ans += ((i & ) ? - : ) * tmp) %= mod;
}
ans = (ans + mod) % mod;
cout<<ans<<endl;
}

bzoj 4710 分特产的更多相关文章

  1. BZOJ 4710: [Jsoi2011]分特产 [容斥原理]

    4710: [Jsoi2011]分特产 题意:m种物品分给n个同学,每个同学至少有一个物品,求方案数 对于每种物品是独立的,就是分成n组可以为空,然后可以用乘法原理合起来 容斥容斥 \[ 每个同学至少 ...

  2. ●BZOJ 4710 [Jsoi2011]分特产

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

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

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

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

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

  5. 4710: [Jsoi2011]分特产

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

  6. bzoj4710: [Jsoi2011]分特产 组合+容斥

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

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

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

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

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

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

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

随机推荐

  1. requirejs神奇问题,data-main修改后,刷新没有重新载入

    同事在使用require的时候,在配置地方增加 urlArgs: "bust=" +  (new Date()).getTime(), 然后问题又来了,这个相当于js版本的东东会把 ...

  2. Python进阶(2)_进程与线程的概念

    1 进程与线程相关概念 1.1 进程 进程定义: 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成,是最小的资源管理单元 程序:用来描述进程要完成哪些功能 ...

  3. C#中时间的Ticks属性

    C#中时间的Ticks属性是一个很大的长整数,单位是 100 毫微秒.表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数,已经说得很清楚了, ...

  4. Linux:Ubuntu16.04下创建Wifi热点

    Linux:Ubuntu16.04下创建Wifi热点说明 1.Ubuntu16.04里面可以直接创建热点,而不用像以前的版本,还要其他辅助工具. 2.本篇文章参考自编程人生 具体步骤如下: 1. 点击 ...

  5. Loadrunder之脚本篇——参数类型

    Internal data Date/Time,Group Name,Iteration Number,Load Generator Name,Ramdom Number,Table,Unique N ...

  6. 服务熔断、降级、限流、异步RPC -- HyStrix

    背景 伴随着业务复杂性的提高,系统的不断拆分,一个面向用户端的API,其内部的RPC调用层层嵌套,调用链条可能会非常长.这会造成以下几个问题: API接口可用性降低 引用Hystrix官方的一个例子, ...

  7. redis操作封装整理

    <?php /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时,才会返回false. * 这点可用于防止缓存穿透 * */ cla ...

  8. Nginx之Location模块

    location 的语法 locltion可以把不同方式的请求,定位到不同的处理方式上 location分类及用法 location大致分为三类: location = patt {} [精准匹配] ...

  9. nf_conntrack之解决方案

    1.现象 在/var/log/message中出现以下信息 Dec 8 11:22:29 product08 kernel: nf_conntrack: table full, dropping pa ...

  10. perl FAQ(zz)

    1. Why do you write a program in Perl? Ans : Easy to use and fast execution since perl script underg ...