首先根据生成函数的套路,这个可以写成:

\[\prod_{i=1}^{n}(1+x^1+x^2+...+x^{c[i]})
\]

然后化简

\[=\prod_{i=1}^{n}\frac{1-x^{c[i]+1}}{1-x}
\]

\[=\prod_{i=1}^{n}\frac{1}{1-x}*(1-x^{c[i]+1})
\]

\[=(1+x^1+x^2+...)^n*\prod_{i=1}^{n}(1-x^{c[i]+1})
\]

位数过多所以只考虑有常数项的位,后面那个式子可以dfs,然后对于得到的有常数项a的一位b,需要乘\( (1+x1+x2+...)^n \),然后这个式子展开后每一项的常数项是\( C_{n+i-1}^{n-1} \),也就是对于这一位方案数(常数项)的统计就是\( k*(C_{n+0-1}{n-1}+C_{n+1-1}{n-1}+...+C_{n+(m-b)-1}^{n-1}) \)这里无穷项变有穷是因为m的个数限制,然后后面那个组合数式子是杨辉三角的一列,找规律发现化简可得 \( C_{n+(m-b)}^{n} \),这里mod不是质数所以逆元不行,但是注意到n-m很小,所以先把n!和(n-m)!化简最后再除以m!即可

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int N=15,mod=2004;
int n,l,r,c[N],ans;
long long fac=1;
int C(int n,int m)
{
if(n<m)
return 0;
long long ans=1,p=fac*mod;
for(int i=n-m+1;i<=n;i++)
ans=1ll*i%p*ans%p;
return (ans/fac)%mod;
}
int dfs(int w,int a,int b,int m)
{
if(w==n+1)
return a*C(n+m-b,n)%mod;
return (dfs(w+1,a,b,m)+dfs(w+1,-a,b+c[w]+1,m))%mod;
}
int main()
{
scanf("%d%d%d",&n,&l,&r);
for(int i=1;i<=n;i++)
scanf("%d",&c[i]),fac*=i;
printf("%d\n",((dfs(1,1,0,r)-dfs(1,1,0,l-1))%mod+mod)%mod);
return 0;
}

bzoj 3027: [Ceoi2004]Sweet【生成函数+组合数学】的更多相关文章

  1. bzoj 3027 [Ceoi2004]Sweet——生成函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3027 化式子到 ( \mul_{i=1}^{n}(1-x^(m[i]+1)) ) / (1- ...

  2. bzoj 3027 [Ceoi2004] Sweet —— 生成函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3027 就是 (1+x+x2+...+xm[i]) 乘起来: 原来想和背包一样做,然而时限很短 ...

  3. bzoj 3027: [Ceoi2004]Sweet (生成函数)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3027. 题目大意:有$n$种数,每种有$C_i$个,问你在这些数中取出$[l,r]$个 ...

  4. BZOJ 3027: [Ceoi2004]Sweet

    容斥 #include<cstdio> using namespace std; int a,b,n,m[15]; long long ans=0,mod=2004; long long ...

  5. 【BZOJ 3027】 3027: [Ceoi2004]Sweet (容斥原理+组合计数)

    3027: [Ceoi2004]Sweet Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 71  Solved: 34 Description John ...

  6. [BZOJ3027][Ceoi2004]Sweet 容斥+组合数

    3027: [Ceoi2004]Sweet Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 135  Solved: 66[Submit][Status] ...

  7. BZOJ3027 - [CEOI2004]Sweet

    Portal Description 给出\(n(n\leq10),a,b(a,b\leq10^7)\)与\(\{c_n\}(c_i\leq10^6)\),求使得\(\sum_{i=1}^n x_i ...

  8. 2018.12.30 bzoj3027: [Ceoi2004]Sweet(生成函数+搜索)

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

  9. BZOJ 3027 Sweets 生成函数,容斥

    Description John得到了n罐糖果.不同的糖果罐,糖果的种类不同(即同一个糖果罐里的糖果种类是相同的,不同的糖果罐里的糖果的种类是不同的).第i个糖果罐里有 mi个糖果.John决定吃掉一 ...

随机推荐

  1. Development of Intel chipsets interconnection

    http://en.wikipedia.org/wiki/Chipset Chipset From Wikipedia, the free encyclopedia     A chipset is ...

  2. Js两种post方式(转)

    第一种提交post的方式是传统方式,判断浏览器进行post请求. <SCRIPT stype=text/javascript> var xmlobj; //定义XMLHttpRequest ...

  3. PHP中include路径修改

    1.__FILE__ __FILE__ always equals to the real path of a php script regardless whether it's included. ...

  4. 【前端JS】radio 可单选可点击取消选中

    普通情况下 radio 单选框仅仅能实现多选一的效果,可是一旦选择当中一个后,这个单选框就不可点击取消其选中状态了.这样的功能在某些业务环境下并不适用.有时我们既须要单选框的多选一效果.也须要复选框的 ...

  5. CycleViewPager

    https://github.com/zhaozhentao/CycleViewPager

  6. Eureka vs Zookeeper

    著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡.在此Zookeeper保证 ...

  7. Appium启动报Permission Denial的问题

    前言 在Android真机上跑自动化脚本时,发现在启动App时报java.lang.SecurityException: Permission Denial: starting Intent : 原先 ...

  8. 距特征之k阶距概念

    k阶原点距和k阶中心距各是说明什么数字特征 http://www.cnblogs.com/emanlee/archive/2011/04/25/2028628.html 二阶中心距,也叫作方差,它告诉 ...

  9. Mahout 0.5部署

    Mahout下载与安装 1.下载Mahout.到地址[1]可以找到镜像地址.我们下载Mahout 0.5.请将mahout-distribution-0.5.tar.gz和mahout-distrib ...

  10. vmware nat不能上网的解决办法

    1 很多奇怪的问题都是vmware突然不能上网导致的 当yum.pip等包管理工具突然不能上网了时,要ping www.baidu.com,看看网络是不是好的. 2 nat网络出现问题的解决办法 2. ...