传送门

生成函数好题。

题意简述:给出n个盒子,第iii个盒子里有mim_imi​颗相同的糖(但不同盒子中的糖不相同),问有多少种选法可以从各盒子中选出数量在[a,b][a,b][a,b]之间的糖果。


思路:先对每个盒子构造出生成函数:1+x2+...+xmi=1−xmi+11−x1+x^2+...+x^{m_i}=\frac{1-x^{m_i+1}}{1-x}1+x2+...+xmi​=1−x1−xmi​+1​

然后把所有盒子的生成函数乘起来:F(x)=∏i=1n(1−xmi+1)(1−x)n=(1+x+x2+...)n∏i=1n(1−xmi+1)F(x)=\frac{\prod_{i=1}^n(1-x^{m_i+1})}{(1-x)^n}=(1+x+x^2+...)^n\prod_{i=1}^n(1-x^{m_i+1})F(x)=(1−x)n∏i=1n​(1−xmi​+1)​=(1+x+x2+...)n∏i=1n​(1−xmi​+1)

这个时候考虑如何统计答案。

直接做很难,因此我们差分一下,转化成求f(b)−f(a−1)f(b)-f(a-1)f(b)−f(a−1),f(x)f(x)f(x)表示选出数量不超过xxx的糖果的方案数。

左边的一坨xmx^mxm的系数看成把mmm拆成nnn个自然数,为Cm+n−1n−1C_{m+n-1}^{n-1}Cm+n−1n−1​

右边的一坨爆搜即可。

然后对于右边搜出来的kxtkx^tkxt,假设当前要求数量不超过mmm,那么这一种组合方式对答案的贡献就是:k∗(Cn−1n−1+Cnn−1+...+Cn+m−1−tn−1)=kCn+m−tnk*(C_{n-1}^{n-1}+C_{n}^{n-1}+...+C_{n+m-1-t}^{n-1})=kC_{n+m-t}^{n}k∗(Cn−1n−1​+Cnn−1​+...+Cn+m−1−tn−1​)=kCn+m−tn​

这样就可以更新答案了。

注意模数的处理

代码:

#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
const int mod=2004;
int m[12],N,a,b,fac=1,sum=0;
inline int C(int n,int m){
	if(n<m)return 0;
	ll Mod=(ll)mod*fac,ret=1;
	for(ri i=n-m+1;i<=n;++i)ret=(ll)i%Mod*ret%Mod;
	return (ret/fac)%mod;
}
inline void dfs(int dep,int type,int idx,int lim){
	if(dep==N+1){(sum+=type*C(lim+N-idx,N)%mod)%=mod;return;}
	dfs(dep+1,type,idx,lim),dfs(dep+1,-type,idx+m[dep]+1,lim);
}
inline int calc(int lim){return sum=0,dfs(1,1,0,lim),sum;}
int main(){
	scanf("%d%d%d",&N,&a,&b);
	for(ri i=1;i<=N;++i)scanf("%d",&m[i]),fac*=i;
	cout<<((calc(b)-calc(a-1))%mod+mod)%mod;
	return 0;
}

最新文章

  1. Web前端面试之HTML
  2. 移动web点5像素的秘密
  3. 利用GCTA工具计算复杂性状/特征(Complex Trait)的遗传相关性(genetic correlation)
  4. c#编程指南(十) 平台调用P-INVOKE完全掌握, 字符串和指针
  5. Android利用Gson解析嵌套多层的Json
  6. Android MediaPlayer和SurfaceView播放视频
  7. 使用ansible批量管理远程服务器
  8. Java web的读取Excel简单Demo
  9. .net,sessionState的Session共享问题解决方案
  10. 终端ls显示的配色方案
  11. poj 1274 The Perfect Stall【匈牙利算法模板题】
  12. Unity 生命周期
  13. Linux下SVN+多个Tomcat自动部署
  14. vue 父子之间的通讯
  15. HDU-2087-KMP-水题
  16. 下载历史版本App
  17. Ubuntu使用ttyS*(如mincom)时不需root权限的方法
  18. winform中的ListBox和ComboBox绑定数据
  19. Codeforces-20152016-northwestern-european-regional-contest-nwerc-A题
  20. 定时任务框架-quartz 时间配置

热门文章

  1. jQuery Grid高级指南
  2. 微信小程序开发小技巧——单击事件传参、动态修改样式、轮播样式修改等
  3. [剑指Offer]6-从尾到头打印链表
  4. RSA加密遇到的一个问题
  5. Repeater绑定数组
  6. power designer 从sqlserver数据库获取字段说明&amp;导出rtf文档模板
  7. webpack接上一篇
  8. 制作根文件系统之内核如何启动init进程
  9. 团队合作之项目NABCD
  10. 找不到或无法加载主类(Could not find or load main class )