多重集组合数一般形式。

用二进制处理更加方便

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define ls (o<<1)
#define rs (o<<1|1)
#define pb push_back
const double PI= acos(-1.0);
const int M = 20+7;
/*
int head[M],cnt;
void init(){cnt=0,memset(head,-1,sizeof(head));}
struct EDGE{int to,nxt,val;}ee[M*2];
void add(int x,int y){ee[++cnt].nxt=head[x],ee[cnt].to=y,head[x]=cnt;}
*/
const int mod=1e9+7;
ll qpow(ll a,ll b)
{ll ans=1;while(b){if(b&1)ans=ans*a%mod;a=a*a%mod;b/=2;}return ans;
}
ll a[M];
ll inv[M];
ll C(ll y,ll x)//y中取x个的方案数
{if(y<0||x<0||y<x||y%mod==0)return 0;y%=mod;//Lucas定理,x<=20,则x/mod=0,C(y/mod,x/mod)=1//只需要求C(y%mod,x%mod) if(x==0)return 1;ll ans=1;for(int i=1;i<=x;i++)ans=ans*(y-i+1)%mod;for(int i=1;i<=x;i++)ans=ans*inv[i]%mod;return ans;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);for(int i=1;i<=20;i++)inv[i]=qpow(i,mod-2); ll n,m;cin>>n>>m;for(int i=0;i<n;i++)cin>>a[i];ll ans=0;for(int x=0;x<(1<<n);x++){if(x==0){ans=(ans+C(n+m-1,n-1))%mod;continue;}ll nm=0,tp=n+m-1;for(int j=0;j<n;j++){if(x>>j&1){nm++;tp-=a[j]+1; }}ll nw=C(tp,n-1);//    cout<<ans<<"  "<<nw<<endl;if(nm&1)nw=-nw;ans=(ans+nw+mod)%mod;}cout<<ans<<endl;return 0;
}

算法竞赛——进阶指南——acwing214. Devu和鲜花 容斥原理相关推荐

  1. 《算法竞赛进阶指南》打卡-基本算法-AcWing 93. 递归实现组合型枚举:递归与递推、dfs、状态压缩

    文章目录 题目解答 题目链接 题目解答 分析: 此题和笔者另一篇博文很像,只不过是限定了个数.<算法竞赛进阶指南>打卡-基本算法-AcWing 92. 递归实现指数型枚举:递推与递归.二进 ...

  2. 《算法竞赛进阶指南》数论篇

    <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSGS <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSG ...

  3. 《算法竞赛进阶指南(by 李煜东)》习题题解 集合

    又是笔者给自己挖的大坑. 这里是李煜东所著<算法竞赛进阶指南(by 李煜东)>的习题题解集合. 有任何错误请在对应文章下反馈或联系 nicest1919@163.com ,谢谢 qwq 从 ...

  4. CH5202 自然数拆分Lunatic版(算法竞赛进阶指南,完全背包)

    算法竞赛进阶指南,278页,完全背包 本题要点: 1.把完全背包的代码改改即可.常规的完全背包: 有n个物品,每个物品的体积是v[i], 价值是w[i], 求装到大小为m的大背包,能获得的最大价值(每 ...

  5. 中位数--《算法竞赛进阶指南》(货仓选址和七夕祭问题详解)

    中位数 今天又和大家见面了啦~ 依旧是 <算法竞赛进阶指南>的学习哦~ 中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本.种群或概 ...

  6. 金字塔(算法竞赛进阶指南)

    虽然探索金字塔是极其老套的剧情,但是有一队探险家还是到了某金字塔脚下. 经过多年的研究,科学家对这座金字塔的内部结构已经有所了解. 首先,金字塔由若干房间组成,房间之间连有通道. 如果把房间看作节点, ...

  7. AcWing 122. 糖果传递【贪心】【《算法竞赛进阶指南》,微软面试题 , HAOI2008】

    AcWing 122. 糖果传递 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 122. 糖果传递 进阶题目 AcWing 105 ...

  8. 算法竞赛进阶指南 骑士放置

    4: 最大独立集 :选出最多的点,使得选出的点之间没有边. 求最大独立集:选出最小的点可以破坏所有的边 <==>最小点覆盖 <==>最大匹配数. 假设最大匹配数为m,共有n个点 ...

  9. 算法竞赛进阶指南 萌新入门!

    算法竞赛进阶指南 文章目录 算法竞赛进阶指南 前言 一.介绍本书 二.如何阅读本书 三.总结 **笔记思路和结构 ** 算法竞赛进阶指南 这篇文章就简单的写一下吧! 前言 ​ 作为一个想要入坑的算法的 ...

最新文章

  1. apicloud 基础
  2. Cargo 教程介绍
  3. AI生成的代码你敢用吗?有人给最近走红的Copilot做了个“风险评估”
  4. Linux:编译动态库时遇到的错误relocation R_X86_64_32 against `a local symbol'
  5. eclipse手动安装alibaba代码规范插件
  6. 把代码push到github所遇到的问题
  7. python做自动化如何定位动态元素_python-web自动化-元素定位
  8. opencv-api draw
  9. 栈的应用-后缀表达式
  10. 约瑟夫环c语言代码加注释,约瑟夫环c语言代码原创.doc
  11. 用Java模拟斗地主游戏
  12. 性能测试的价值、全链路压测了解
  13. 清华大学鲍橒计算机1999,《最强大脑》观察员学历:鲍橒清华,王峰武大,DR魏非211...
  14. 划重点 iOS15正式发布, 全新的通知推送系统,你必须要知道
  15. 《Educated》《你当像鸟飞往你的山》阅读笔记
  16. 数通学习笔记1 - 数据通信网络基础
  17. 31家互联网地图服务甲级测绘资质单位
  18. ios 边录音边放_iOS开发:AVPlayer实现流音频边播边存
  19. 移动机器人运动仿真:从Mobotsim到Robotsim
  20. 去除字符串中的某个字符

热门文章

  1. uniapp防抖节流的使用
  2. 「开源者行」开源社高校巡回宣讲:清华大学站
  3. 一整套Linux操作手册,竟然出了电子版详细教程!真香
  4. 基于p2p的sip电话系统
  5. Python3网络爬虫:漫画下载,动态加载、反爬虫这都不叫事!
  6. 百度地图android绘图类,百度地图绘制点、图形
  7. 生活中常见物联网实例_什么是物联网?常见 IoT 物联网协议最全讲解
  8. 玩游戏学c语言(一)EasyX图像库安装
  9. c语言中的union的作用,c语言中的union是什么意思啊?
  10. 怎么搜网站关联词,长尾词挖掘怎么做