luogu 5505 [JSOI2011]分特产 广义容斥

code:

#include <bits/stdc++.h>
#define N 10005
#define LL long long
using namespace std;
const LL mod=1000000007;
void setIO(string s)
{
    string in=s+".in";
    string out=s+".out";
    freopen(in.c_str(),"r",stdin);
}
int a[N];
LL fac[N],inv[N],f[N],g[N];
LL qpow(LL x,LL y)
{
    LL tmp=1ll;
    for(;y;y>>=1,x=x*x%mod)
        if(y&1) tmp=tmp*x%mod;
    return tmp;
}
LL Inv(LL x) { return qpow(x,mod-2); }
LL C(int x,int y)
{
    return fac[x]*inv[y]%mod*inv[x-y]%mod;
}
int main()
{
    // setIO("input");
    int i,j,n,m;
    fac[0]=inv[0]=1ll;
    for(i=1;i<N;++i) fac[i]=fac[i-1]*1ll*i%mod,inv[i]=Inv(fac[i]);
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;++i) scanf("%d",&a[i]);
    for(i=0;i<=n;++i)
    {
        f[i]=C(n,i);
        for(j=1;j<=m;++j) (f[i]=f[i]*C(a[j]+n-i-1,n-i-1)%mod)%=mod;
    }
    for(i=0;i<=n;++i)
    {
        (g[0]+=qpow(-1,i)*f[i]%mod+mod)%=mod;
    }
    printf("%lld\n",g[0]);
    return 0;
}

  

原文地址:https://www.cnblogs.com/guangheli/p/11734770.html

时间: 2024-09-30 11:44:49

luogu 5505 [JSOI2011]分特产 广义容斥的相关文章

【BZOJ4710】[Jsoi2011]分特产 组合数+容斥

[BZOJ4710][Jsoi2011]分特产 Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望任何一个同学因为没有拿到特产而感到失落,所以每个同学都必须至少分得一个特产. 例如,JYY 带来了2 袋麻花和1 袋包子,分给A 和B 两位同学,那么共有4 种不同的分配方法: A:麻花,B:麻花.包子 A:麻花.麻花,B:包子 A:包子,B:麻花.麻

bzoj4710 [Jsoi2011]分特产(容斥)

4710: [Jsoi2011]分特产 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 814  Solved: 527[Submit][Status][Discuss] Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望任 何一个同学因为没有拿到特产而感到失落,所以每个同学都必须至少分得一个特产.

【题解】分特产(组合数+容斥)

[题解]分特产(组合数+容斥) 一道小水题. 假如没有这个要求每个人都要有一个特产的限制我们直接可以组合数. 我们又发现人(本质上)是没有区别的,所以容斥的复杂度只有\(O(n)\) \(n\)个人分\(m\)个特产,每个特产有\(a_i\)个,人可以不拿特产,的方案数就是把\(a_i\)分成\(n\)份,而且可以分为\(0\)份. 这个的答案就是 \[ f(n)=\prod_{i=1}^m {a_i+n-1\choose n-1} \] 意思就是有\(a_i+n\)个球分成不为空\(n\)份的

「总结」容斥。三.广义容斥

首先让我们考虑反演的真正原理. $fr.$反演原理 对于两个函数$f$和$g$. 我们知道: $$g(n)=\sum\limits_{i=0}^{n}a_{n,i}f(i)$$ $$f(n)=\sum\limits_{i=0}^{n}b_{n,i}g(i)$$ 将第一个式子代入第二个. $$\begin{array}{rcl}\\f(n)&=&\sum\limits_{i=0}^{n}b_{n,i}\sum\limits_{j=0}^{i}a_{i,j}f(j)\\&=&\

Bzoj4710 [Jsoi2011]分特产

Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 96  Solved: 62[Submit][Status][Discuss] Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望任 何一个同学因为没有拿到特产而感到失落,所以每个同学都必须至少分得一个特产. 例如,JYY 带来了2 袋麻花和1 袋包子,

[Jsoi2011]分特产

Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望任 何一个同学因为没有拿到特产而感到失落,所以每个同学都必须至少分得一个特产. 例如,JYY 带来了2 袋麻花和1 袋包子,分给A 和B 两位同学,那么共有4 种不同的 分配方法: A:麻花,B:麻花.包子 A:麻花.麻花,B:包子 A:包子,B:麻花.麻花 A:麻花.包子,B:麻花 Input 输

●BZOJ 4710 [Jsoi2011]分特产

题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4710 题解: 容斥,组合先看看这个方案数的计算:把 M 个相同的东西分给 N 个人,每个人可以一个都分不到即把 M 个小球放入 N 个盒子,盒子可以为空. 方案数为 ${C}_{N+M-1}^{N-1}$.怎么理解如下: 如果现在有 N+m-1 个位置,我们可以在 N-1 个位置放隔板,并且令相邻的两个隔板(把首尾也看作另外2个隔板)中间的空余位置放小球.(相邻的两个隔板之间共有 N 个间

[Luogu#4707] 重返现世(min-max容斥+背包dp)

Address Luogu#4707 Solution 前置技能:记 \(max_k(S)\) 表示 \(S\) 中第 \(k\) 大的数,\(min(S)\) 表示 \(S\) 中最小的数,那么有:\[max_k(S)=\sum_{T∈S,T\neq\emptyset}\binom{|T|-1}{k-1}(-1)^{|T|-k}min(T)\]证明:我们考虑构造容斥系数,即设: \[max_k(S)=\sum_{T∈S,T\neq\emptyset}f(|T|)min(T)\]当 \(min(

bzoj 4710 : [Jsoi2011]分特产

好久没做组合的题竟然懵逼了好长时间,去吃了顿饭就突然会做了... 如果没有每个人至少一个的限制的话那么答案显然是∏(c(n-1,a[i]+n-1)),相当于把每一种物品排成一排然后每排放(n-1)个隔板,第i个隔板和第i+1个隔板之间的物品就是第i个人的物品,显然每种方案对应着一种实际方案(会组合的人就当我是在废话吧). 那么如果加上限制呢,第一反应显然是容斥,上一段算出的答案可能有一个人没有,那就减去n-1个人的所有合法方案(没有空的人)*n(枚举谁没有),如果有两个人没有那就减去n-2个人的