题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3027

题目大意:有$n$种数,每种有$C_i$个,问你在这些数中取出$[l,r]$个,问你有多少种不同的取法,答案对2004取模。

数据范围:$n≤10$,$C_i≤10^6$,$1≤l<r≤10^7$。

我们不妨设$f(n)$表示不超过$n$的数的取法之和。

则答案显然为$f(r)-f(l-1)$,下面来推导f(x)。

显然,$f(m)$等于多项式$\Pi_{i=1}^{n} \sum_{j=1}^{C_i}x^i$[0,m]的系数和。

考虑到$C_i$很大,如果直接多项式乘法,会$T$,必须化简。

原式

$=\Pi_{i=1}^n \frac{1-x^{C_i} } {1-x}$。

$=\frac{\Pi_{i=1}^{n} (1-x^{C_i})}{(1-x)^n}$。

$=\Pi_{i=1}^{n} (1-x^{C_i}) \sum_{j=-1}^{\infty} \binom{n+j}{n-1}x^(j+1)$

考虑式子的前半部分,不难发现,该部分最多只有$2^n$个位置是非零的,显然我们只需要处理这部分,并不需要对整个多项式做乘法。实现该步骤一个dfs即可。

对于后半部分,假设求f(m)过程中前面通过dfs连乘出的单项式次数为k,系数为p,那么需要累加的答案显然多项式$p \times \sum_{j=-1}^{m-k-1} \binom{n+j}{n-1}x^(j+1)$。

然后根据组合数的相关公式进行化简,得到$p \times \binom{n+m-k-1}{n-1}$。

然后就愉快地昨晚啦

 #include<bits/stdc++.h>
#define L long long
#define MOD 2004
using namespace std; L n,a,b,now,ans=;
L m[]={},mul=; L C(int n,int m){
if(n<m) return ;
L ans=,mod=mul*MOD;
for(L i=n-m+;i<=n;i++)
ans=i%mod*ans%mod;
return (ans/mul)%MOD;
} void dfs(L dep,L fu,L mi,L lim){
if(dep==n+){
now=(now+fu*C(n+lim-mi,n)%MOD)%MOD;
return;
}
dfs(dep+,fu,mi,lim);
dfs(dep+,-fu,mi+m[dep]+,lim);
}
L calc(L hh){
now=;
dfs(,,,hh);
return now;
}
int main(){
cin>>n>>a>>b;
mul=; for(int i=;i<=n;i++) mul*=i;
for(int i=;i<=n;i++) cin>>m[i];
ans=((calc(b)-calc(a-))%MOD+MOD)%MOD;
cout<<ans<<endl;
}

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【生成函数+组合数学】

    首先根据生成函数的套路,这个可以写成: \[ \prod_{i=1}^{n}(1+x^1+x^2+...+x^{c[i]}) \] 然后化简 \[ =\prod_{i=1}^{n}\frac{1-x^ ...

  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. Python os.chmod

    os.chmod(path,mode) 这个方法应该很简单,只需要2个参数,一个是路径,一个是说明路径的模式,下面列出了这个用法中可以使用的一些常用的模式: stat.S_ISUID: Set use ...

  2. using directive 使用指令,与using declaration使用声明。

    使用指令是把名字空间中的所有名字引入到当前作用域,而使用声明是把名字空间的某个名字引入到当前作用域中 语法如下 //test.cpp #include<iostream> //using ...

  3. Spring Boot 集成 Mybatis(druid 数据库连接池 以及 分页配置)

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射,目前很大一部分互联网.软件公司都在使用这套框架 关于Mybatis-Generator的下载可以到这个地址:http ...

  4. 2018.07.03 POJ 2653 Pick-up sticks(简单计算几何)

    Pick-up sticks Time Limit: 3000MS Memory Limit: 65536K Description Stan has n sticks of various leng ...

  5. 2018.09.19 atcoder Snuke's Coloring(思维题)

    传送门 谁能想到这道题会写这么久. 本来是一道很sb的题啊. 就是每次选一个点只会影响到周围的九个方格,随便1e9进制就可以hash了,但是我非要作死用stl写. 结果由于技术不够高超,一直调不出来. ...

  6. Django入门与实践-第11章:URL 分发(完结)

    http://127.0.0.1:8000http://127.0.0.1:8000/boards/1/http://127.0.0.1:8000/boards/2/http://127.0.0.1: ...

  7. 2017 pycharm 激活码

    BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  8. 【科普】Web(瓦片)地图的工作原理

    [译者按:在看MapBox Guides文档时,看到这篇 How do web maps work?,这篇文档通俗易懂地阐述了Web地图是如何工作的,其实更偏向讲瓦片地图的工作原理,鉴于之前很多人不了 ...

  9. 用Socket开发的一枚小型实时通信App

    Socket 英文原意是插座. 在网络世界里, 当一台主机温柔而体贴的同时提供多个服务时, 每个服务被绑定在一个端口上, 而每个端口就好像一个小插座. 用户们连接对应的插座去获取相应的服务. 在Nod ...

  10. Shell编程-05-Shell中条件测试与比较

    目录 Shell脚本条件测试 Shell文件测试 Shell字符测试 Shell整数测试 Shell逻辑测试 Shell条件测试总结 Shell脚本条件测试     在Shell脚本中各种条件结构和流 ...