正题

题目链接:https://www.luogu.org/problem/CF451E


题目大意

长度为nnn的序列aia_iai​,有如下要求

  1. ai∈[0...xi]a_i\in[0...x_i]ai​∈[0...xi​]
  2. ∑i=1nai=s\sum_{i=1}^na_i=s∑i=1n​ai​=s

求序列个数。


解题思路

考虑容斥,这样我们就可以将条件转换为ai>xia_i>x_iai​>xi​,然后我们可以让n−xi−1n-x_i-1n−xi​−1这样就将条件变为了ai≥0a_i\geq 0ai​≥0,然后可以用组合数插板法计算,也就是答案为
∑SCs−∑xi∈S(xi+1)−1n−1∗(−1)∣S∣\sum_{S}C_{s-\sum_{x_i\in S}(x_i+1)-1}^{n-1}*(-1)^{|S|}S∑​Cs−∑xi​∈S​(xi​+1)−1n−1​∗(−1)∣S∣


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll XJQ=1e9+7;
ll n,s,inv[50],x[50],ans;
bool v[50];
ll power(ll x,ll b)
{ll ans=1;while(b){if(b&1) ans=ans*x%XJQ;x=x*x%XJQ;b>>=1;}return ans;
}
ll C(ll n,ll m)
{if(n<0||m<0||n<m)return 0;if(n%XJQ==0||m==0)return 1;ll x=1;for(ll i=n-m+1;i<=n;i++)x=x*(i%XJQ)%XJQ;return x*inv[m]%XJQ;
}
void dfs(ll dep,ll _,bool flag)
{ll _n=s+n;for(ll i=1;i<=n;i++)if(v[i]) _n-=x[i]+1;if(flag)ans=((ans+_*C(_n-1,n-1))%XJQ+XJQ)%XJQ;if(dep>n) return;v[dep]=1;dfs(dep+1,-_,1);v[dep]=0;dfs(dep+1,_,0);
}
int main()
{scanf("%lld%lld",&n,&s);inv[1]=1;for(ll i=2;i<=20;i++)inv[i]=inv[i-1]*power(i,XJQ-2)%XJQ;for(ll i=1;i<=n;i++)scanf("%lld",&x[i]);ans=C(s+n-1,n-1);dfs(1,1,0);printf("%lld",ans);
}

CF451E-Devu and Flowers【组合计数,容斥】相关推荐

  1. cf451E. Devu and Flowers(产生不同多重集数量)

    cf451E. Devu and Flowers 题意: 有n个箱子,第i个箱子里有ai朵花,同一个箱子里花的颜色一样,不同箱子里的花颜色不一样.现在在这些箱子里选出m朵花组成一束,求一共有多少种方案 ...

  2. CodeForces - 1486F Pairs of Paths(树上计数+容斥)

    题目链接:点击查看 题目大意:给出一棵 nnn 个点的树,再给出 mmm 条路径,现在问有多少个路径对 (x,y)(x,y)(x,y),满足第 xxx 条路径和第 yyy 条路径有且仅有一个交点 题目 ...

  3. 【笔记】郑州大学ACM实验室寒假新生培训之 排列组合与容斥

    >>b站视频链接<< 目录: OP 组合数和排列数 组合数与杨辉三角 Lucas定理 容斥原理 错位排序 m球n盒问题 多重集的r-组合数 ED OP \ 组合数和排列数 对于 ...

  4. CF(439E - Devu and Birthday Celebration)莫比乌斯容斥

    题意:将n个糖果插入f-1个挡板分成f分(a1,a2,a3...af). 问有多少种分法能够使得gcd(a1,a2,a3...af)=1; 解法.莫比乌斯容斥,首先按1为单位分,这时候有C(n-1,f ...

  5. 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)...

    题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...

  6. 解题报告(五)组合计数(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  7. # CF451 - Devu and Flowers

    CF451 - Devu and Flowers n倍经验题: CF451E Devu and Flowers - 洛谷 codeforces传送门 感觉算法进阶指南的题目有空还是要都刷一下 题意: ...

  8. CodeForces 997C-Sky Full of Stars〖容斥定理+组合计数〗

    网页链接:传送门 C. Sky Full of Stars time limit per test : 4 seconds memory limit per test : 256 megabytes ...

  9. #容斥,组合计数#洛谷 3214 卡农

    题目 在集合S=[1∼n]S=[1\sim n]S=[1∼n]中选出mmm个子集,满足三点性质: 所有选出的mmm个子集都不能为空. 所有选出的mmm个子集中,不能存在两个完全一样的集合. 所有选出的 ...

最新文章

  1. python菜鸟基础教程-python基础菜鸟教程,Python的基础语法
  2. gcc -ldl 选项作用
  3. 洪磊父亲避谈洪磊获释 拘留已过24小时留滞期
  4. 大学生眼中的对方,哈哈
  5. WORD如何将多文档快速汇总到一份WORD文件里面?
  6. X Window Bitmaps And Pixmaps
  7. 翻译 Windows Server 2016和System Center 2016 技术预览版4 使创新更容易
  8. n型半导体和p型半导体的区别_NPN型三极管和PNP型三极管有什么区别?
  9. python笔试题 github_在GitHub上收获6519颗星星的Python面试题资源,到底有多牛?
  10. 土豆聊天poeato Chat注册账号时提示网络刺错误怎么解决
  11. TCP协议和UDP协议
  12. PL/SQL——员工涨工资问题
  13. Discuz!安全防护之注册机防护插件免费发布
  14. 如何使用python-如何用Python提取中文关键词?
  15. golang map 获取某个值
  16. 哈希(哈希表的应用)
  17. Johnny-Five入门
  18. 永信至诚成功当选CNCERT网络安全应急服务支撑单位
  19. Arduino/stm32 智能小车设计(一)
  20. 安卓刷java系统_xp系统下面(android)安卓手机刷机ROM教程

热门文章

  1. kafka偏移量保存到mysql里_Kafka 新版消费者 API(二):提交偏移量
  2. mysql group_concat去重_MySQL group_concat() 函数用法
  3. java面向对象使用字符串_java面向对象中的String类中12种常用的方法
  4. 后端学习 - RabbitMQ
  5. 7-3 符号三角形 (10 分)(思路+详解)
  6. 每天都在红绿灯前面梭行,不如自己来实现个红绿灯?
  7. mysql脚本的制作_制作脚本实现mysql自动备份
  8. [MyBatisPlus]通用枚举
  9. python中开关_pyq中的开关按钮
  10. SQL(七) - 事务、索引、视图