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

\[\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. 关于Activity启动模式(launchMode)和intent设置测试后 发现和网上说的不符 是不是我错了 求解

    看了很多关于Activity启动模式(launchMode)和intent设置intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK);发现网上说的和我测试结果 ...

  2. iOS 小动画

    一.图片旋转 CABasicAnimation* rotationAnimation; rotationAnimation = [CABasicAnimation animationWithKeyPa ...

  3. Cannot instantiate the type AppiumDriver,AppiumDriver升级引发的问题

    转自:http://blog.csdn.net/zhubaitian/article/details/39717889 1. 问题描述和起因 在使用Appium1.7.0及其以下版本的时候,我们可以直 ...

  4. POJ 2586 Y2K Accounting Bug(枚举大水题)

    Y2K Accounting Bug Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10674   Accepted: 53 ...

  5. String池与iterator对集合的迭代

    一.静态导入 1.       导入类的静态属性 import static java.lang.System.out; out.println("haha"); 2.       ...

  6. 初识Restful(学习笔记)

    什么是Restful? REST -- Resource Representational State Transfer(表现层状态转移) 本质上是一种优雅的URL表达方式,描述资源的状态和状态的转移 ...

  7. linux下的文件和文件夹的权限问题

    1 文件和文件夹的权限 文件和文件夹的权限设置的根本目的是控制人对它们的访问. 2 用户分类 本文件的拥有者.本文件所属的grou.其它用户. 3 也就是说 在读写文件或者文件夹时,要看看自己是属于哪 ...

  8. positive 相对其正常位置,那什么是正常位置: 请问调试,请问浏览器

    [问题代码 <!DOCTYPE html><html><head> <title></title> <meta charset=&qu ...

  9. android支付

    这里不讲具体的某个平台的支付使用,在工作中,公司使用到了ping++支付,使用它的好处是可以不用关心某个平台的支付了,例如:微信支付.支付宝支付等,太多的平台有个整合,是一个很好的事情,当然这也减轻了 ...

  10. POJ3660 Cow Contest —— Floyd 传递闭包

    题目链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...