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

\[\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. 简洁的ios小界面

    下午写写了个小东西小界面 有须要的能够直接拿过来用 ,简洁,挺好看,自我感觉: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDEyMzIwOA= ...

  2. SpringBoot学习之启动报错【This application has no explicit mapping for /error.....】

    今天做SpringBoot小例子,在请求controller层的时候出现如下问题. Whitelabel Error Page This application has no explicit map ...

  3. ZOJ 3230 Solving the Problems(数学 优先队列啊)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3230 Programming is fun, Aaron is ...

  4. iOS 小动画

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

  5. Spring Boot与Micronaut性能比较

    文章转载出处:微信公众号——锅外的大佬 链接:https://mp.weixin.qq.com/s/MdBByJ0ju-rROKg7jsWygA 今天我们将比较两个在JVM上构建微服务的框架:Spri ...

  6. 进程-IPC 管道 (一)

    详见:https://github.com/ZhangzheBJUT/linux/blob/master/IPC(%E4%B8%80).md 一 IPC 概述 进程间通信就是在不同进程之间传播或交换信 ...

  7. [网页游戏开发]进一步了解Morn UI及工作流

    Morn UI工作流 Morn Builder不仅仅是对Flash IDE的改进,传统的开发协作是以fla为基础,由于fla是二进制文件,在以svn等版本控制软件协作下,合并过程中会出现各种各样的问题 ...

  8. hadoop yarn namenode datanoe 启动异常问题解决 分析日志

    cat logs/hadoop-root-datanode-hadoop1.log ********************************************************** ...

  9. SQL 和 NoSQL 比较

    定义: SQL (Structured Query Language) 数据库,指关系型数据库.主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源). NoS ...

  10. 大整数分解质因数(Pollard rho算法)

    #include <iostream> #include <cstring> #include <cstdlib> #include <stdio.h> ...