CF451E Devu and Flowers(容斥)

题目大意

\(n\)种花每种\(f_i\)个,求选出\(s\)朵花的方案。不一定每种花都要选到。

\(n\le 20\)

解法

利用可重组合的公式。

不考虑\(f_i\)的限制,直接可重组合的方案是,意思是从可以重复的\(n\)个元素中取出\(r\)个的个数。注意,根据定义,此时\(r\)种每个都要选。

\[f(s,r)={s+r-1 \choose r-1}
\]

考虑限制怎么办,我们先容斥。

我们可以钦定某些花选择了\(f_i+1\)次,代表这个花选出不合法的了。

那么为什么不是钦定\(f_i+0,2 \dots233666\dots \infin\) 呢?

是因为,我们钦定这种花选择了\(f_i+1\)后,就保证这种花超过限制了。

此时可重组合的公式仍然可以选择\(i\)号花,所以考虑到了\(i\)号花选择了\(\ge f_i+1\)的情况。

所以我们钦定\(f_i+1\)朵花就好了。

根据容斥原理,所有花不超过限制的方案数为

\[\Sigma_{t\subseteq S} (-1)^{|t|}f(s-\Sigma_{x\in t}(x_i+1)+r-1,r-1)
\]

//@winlere
#include<bits/stdc++.h>
#define int long long
using namespace std; typedef long long ll;
template < class ccf > inline ccf qr(ccf ret){ ret=0;
register char c=getchar();
while(not isdigit(c)) c=getchar();
while(isdigit(c)) ret=ret*10+c-48,c=getchar();
return ret;
}inline int qr(){return qr(1);}
const int maxn=25;
const ll mod=1e9+7;
inline ll Pow(ll base,ll p){
base%=mod;
register ll ret=1;
for(;p;p>>=1,base=base*base%mod)
if(p&1) ret=ret*base%mod;
return ret;
}
ll data[maxn],s,ans,inv[maxn]={1},jie[maxn]={1};
int n; inline ll C(const ll&n,const ll&m){
if(n<m||m<0||n<0)return 0;
if(n==m)return 1;
register ll ret=inv[m];
for(register ll t=n;t>=n-m+1ll;--t)
ret=t%mod*ret%mod;
return ret;
}
#undef int
int main(){
#define int long long
#ifndef ONLINE_JUDGE
freopen("in.in","r",stdin);
//freopen("out.out","w",stdout);
#endif
for(register int t=1;t<maxn;++t)
inv[t]=inv[t-1]*Pow(t,mod-2ll)%mod;
n=qr();s=qr(1ll);ans=C(s+n-1ll,n-1ll);
for(register int t=1;t<=n;++t)
data[t]=qr(1ll);
for(register int t=1,edd=1<<n,cnt=0;t<edd;++t){
ll f=cnt=0,delt;
for(register int i=1;i<=n;++i)
if(t<<1>>i&1)
f+=data[i]+1ll,++cnt;
delt=C(s-f+n-1ll,n-1ll);
if(cnt&1) ans=(ans-delt)%mod,ans=ans<0?ans+mod:ans;
else ans=(ans+delt)%mod;
}
cout<<ans<<endl;
return 0;
}

CF451E Devu and Flowers(容斥)的更多相关文章

  1. Codeforces Round #258 (Div. 2) E. Devu and Flowers 容斥

    E. Devu and Flowers 题目连接: http://codeforces.com/contest/451/problem/E Description Devu wants to deco ...

  2. CodeForces - 451E Devu and Flowers (容斥+卢卡斯)

    题意:有N个盒子,每个盒子里有fi 朵花,求从这N个盒子中取s朵花的方案数.两种方法不同当且仅当两种方案里至少有一个盒子取出的花的数目不同. 分析:对 有k个盒子取出的数目超过了其中的花朵数,那么此时 ...

  3. CF451E Devu and Flowers 解题报告

    CF451E Devu and Flowers 题意: \(Devu\)有\(N\)个盒子,第\(i\)个盒子中有\(c_i\)枝花.同一个盒子内的花颜色相同,不同盒子的花颜色不同.\(Devu\)要 ...

  4. CF451E Devu and Flowers (组合数学+容斥)

    题目大意:给你$n$个箱子,每个箱子里有$a_{i}$个花,你最多取$s$个花,求所有取花的方案,$n<=20$,$s<=1e14$,$a_{i}<=1e12$ 容斥入门题目 把取花 ...

  5. CF451E Devu and Flowers (隔板法 容斥原理 Lucas定理 求逆元)

    Codeforces Round #258 (Div. 2) Devu and Flowers E. Devu and Flowers time limit per test 4 seconds me ...

  6. CF451E Devu and Flowers

    多重集求组合数,注意到\(n = 20\)所以可以用\(2 ^ n * n\)的容斥来写. 如果没有限制那么答案就是\(C(n + s - 1, n - 1)\).对每一个限制依次考虑,加上有一种选多 ...

  7. CF451E Devu and Flowers 数论

    正解:容斥+Lucas定理+组合数学 解题报告: 传送门! 先mk个我不会的母函数的做法,,, 首先这个题的母函数是不难想到的,,,就$\left (  1+x_{1}^{1}+x_{1}^{2}+. ...

  8. BZOJ1101 [POI2007]Zap 和 CF451E Devu and Flowers

    Zap FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d.作为FGD的同学,FGD希望得到 ...

  9. CF451E Devu and Flowers(组合数)

    题目描述 Devu想用花去装饰他的花园,他已经购买了n个箱子,第i个箱子有fi朵花,在同一个的箱子里的所有花是同种颜色的(所以它们没有任何其他特征).另外,不存在两个箱子中的花是相同颜色的. 现在De ...

随机推荐

  1. EffectiveJava(13)使类和成员的可访问性最小化

    1.为什么要使类和成员可访问性最小化 它可以有效地解除组成系统的各模块之间的耦合关系,使得这些模块可以独立的开发 测试 优化 使用 理解和修改.提高软件的可重用性 2.成员的访问级别 私有(priva ...

  2. 【HTML 元素】嵌入另一张HTML文档、通过插件嵌入内容、嵌入数字表现形式

    1.嵌入另一张HTML文档 iframe 元素允许在现有的HTML文档中嵌入另一张文档.下面代码展示了iframe元素的用法: <!DOCTYPE html> <html lang= ...

  3. Android面试题3之描写叙述下Android的系统架构

    描写叙述下Android的系统架构: Android系统从下往上分为Linux内核层(linux kerner),执行库(runtime library),应用程序框架层,应用程序层 linuxker ...

  4. Activity启动活动最佳写法

    一,在被启动的Activity中新加一个静态方法public static void actionStart(Context context, String data1, String data2) ...

  5. H265 Rtp封包

    H265 Rtp封包可以参考Ffmpeg,具体实现在文件rtpenc_h264_hevc.c(4.0.1版本),核心的方法是nal_send 这个方法有些绕,下面帖子具体的代码及注释. static ...

  6. 工作总结 错误 using 块缺少结束字符“}”。请确保此块内的所有“{”都有匹配的“}”字符,并且任何“}”都不会解释为标记。

    页面上 有两个 它会跟标签 匹配的     标准要在同一级别下 什么也不改变 只改变它们位置 就不报错了 总结 @using (Html.BeginForm()) { } 要根据标签位置 匹配  要放 ...

  7. Qt录音机

    近期做项目, 须要一个麦克风音量监听的功能: 找了好多这方面的资料, 不知道为什么 总之非常少, 在此总结一下, 发贴一枚.. \ watermark/2/text/aHR0cDovL2Jsb2cuY ...

  8. 如何验证cname,MX,spf记录是否生效?

    创建域名邮箱时,对域名做完相应设置后,在域名邮箱设置里点击“设置完成并提交验证”来等待验证所有权和MX记录设置的正确性.但同时也可以通过下面的方法确认设置是否成功和正确: 一.验证CNAME记录的方法 ...

  9. asp.net repeater Container.ItemIndex

    <asp:Repeater ID="myRepeater" runat="server"> <HeaderTemplate> <t ...

  10. poj3411--Paid Roads(bfs+状压)

    题目链接:id=3411">点击打开链接 题目大意:有n个点.m条有向边,经过边须要一个花费,a b c p q代表 a到b的一条道路,假设经过这条边之前经过c点,那么须要p的花费,否 ...