/*
给定n个盒子,第i个盒子有ai朵花,现在从中选取m朵花,问选取方案数
用容斥定理解决 m=x1+x2+..+xn
C(m+n-1,n-1)+sum{ (-1)^p * C(m+n-1-(1+n1)-(1+np),n-1) }

*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
ll ans,n,s,A[],inv[]; ll Pow(ll a,ll b){
ll res=;
while(b){
if(b%)
res=res*a%mod;
b>>=;a=a*a%mod;
}
return res;
}
ll C(ll y,ll x){
if(y<||x<||y<x)return ;
y%=mod;
if(y==|| x==)return ;
ll ans=;
for(ll i=;i<x;i++)
ans=(ll)ans*(y-i)%mod;
for(ll i=;i<=x;i++)
ans=ans*inv[i]%mod;
return ans;
} int main(){
cin>>n>>s;
for(ll i=;i<=;i++)
inv[i]=Pow(i,mod-); for(int i=;i<n;i++)cin>>A[i]; for(ll i=;i<(<<n);i++){
ll a=n-,b=s+n-,tmp=;
if(i==){
ans=(ans+C(b,a))%mod;
continue;
}
for(int j=;j<n;j++)
if(i & ((ll)<<j)){
tmp++;
b-=A[j]+;
}
if(tmp%){//减法
ans=(ans-C(b,a))%mod;
ans=(ans+mod)%mod;
}
else {
ans=(ans+C(b,a))%mod;
}
}
cout<<ans<<'\n';
}

容斥原理解一般不定方程——cf451E经典题的更多相关文章

  1. Re:Exgcd解二元不定方程

    模拟又炸了,我死亡 $exgcd$(扩展欧几里德算法)用于求$ax+by=gcd(a,b)$中$x,y$的一组解,它有很多应用,比如解二元不定方程.求逆元等等,这里详细讲解一下$exgcd$的原理. ...

  2. poj 1611:The Suspects(并查集,经典题)

    The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 21472   Accepted: 10393 De ...

  3. Hihicoder 题目1 : Trie树(字典树,经典题)

    题目1 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编 ...

  4. poj 3264:Balanced Lineup(线段树,经典题)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 32820   Accepted: 15447 ...

  5. poj 2503:Babelfish(字典树,经典题,字典翻译)

    Babelfish Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 30816   Accepted: 13283 Descr ...

  6. poj 2001:Shortest Prefixes(字典树,经典题,求最短唯一前缀)

    Shortest Prefixes Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 12731   Accepted: 544 ...

  7. hdu 1247:Hat’s Words(字典树,经典题)

    Hat’s Words Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  8. hdu 1075:What Are You Talking About(字典树,经典题,字典翻译)

    What Are You Talking About Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K ...

  9. hdu 1251:统计难题(字典树,经典题)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

随机推荐

  1. nodejs模块——fs模块 使用fs.read读文件

    使用fs.read读文件 fs.read() 先介绍fs.open. fs.open(path,flags,[mode],callback)方法用于打开文件,以便fs.read()读取. 参数说明: ...

  2. 【网络】Ping 的TTL理解

    一.含义 “TTL”是生存时间(Time To Live)的意思 关于时间与跳的讨论, https://www.zhihu.com/question/61007907 一开始理解为time to le ...

  3. Linux环境下安装PHP的memced扩展

    先下载libmemcached: wget  https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.t ...

  4. [NOIP模拟23]题解

    中间鸽了好几篇啊QAQ……有时间再补吧…… A.mine sbdp,考场上写的巨麻烦不过还是能A的(虽然MLE了……每一维都少开1就A掉了555).设$dp[i][j][k]$为枚举到第i位,第i位是 ...

  5. 2017年上半年,一线城市豪宅TOP50成交均价排名

    辣眼睛!最新豪宅排行榜来了!释放重磅信号 东方财富网 2017-07-27 08:47 阅读:152 摘要:在中国,在买房这个问题上,不少工薪族都感到亚历山大.但是,在富豪眼里,犯难的是投资哪个房地产 ...

  6. java8的正确使用姿势

    ackage com.expgiga.Java8; import java.util.ArrayList; import java.util.Arrays; import java.util.List ...

  7. 戏说 .NET GDI+系列学习教程(三、Graphics类的应用_打印收银小票)

    #region 打印 /// <summary> /// 打印字符串内容 /// </summary> /// <returns></returns> ...

  8. 访问者模式和 ASM

    文章目录 一. 概述 & 定义 二. 示例 2.1 创建抽象元素 2.2 创建具体元素 2.3 创建抽象访问者 2.4 创建具体访问者 2.5 访问者代码调用 三. ASM 中的访问者模式 3 ...

  9. IDEA上传项目到SVN

    1.打开IDEA ,上面工具栏选择VCS 选择把项目交给SVN管理 2.选择SVN 3.选择SVN管理后可以看到项目变这个颜色 4.右键项目选择如下 5.点击绿色的+号,选择一个SVN仓库的地址,下面 ...

  10. 使用target属性跳转到指定位置

    先上代码,使用frameset将网页分割为三个窗口,上,左和右. 1 <html> 2 <head> 3 <title>Main</title> 4 & ...