bzoj 3027: [Ceoi2004]Sweet【生成函数+组合数学】
首先根据生成函数的套路,这个可以写成:
\]
然后化简
\]
\]
\]
位数过多所以只考虑有常数项的位,后面那个式子可以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【生成函数+组合数学】的更多相关文章
- bzoj 3027 [Ceoi2004]Sweet——生成函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3027 化式子到 ( \mul_{i=1}^{n}(1-x^(m[i]+1)) ) / (1- ...
- bzoj 3027 [Ceoi2004] Sweet —— 生成函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3027 就是 (1+x+x2+...+xm[i]) 乘起来: 原来想和背包一样做,然而时限很短 ...
- bzoj 3027: [Ceoi2004]Sweet (生成函数)
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3027. 题目大意:有$n$种数,每种有$C_i$个,问你在这些数中取出$[l,r]$个 ...
- BZOJ 3027: [Ceoi2004]Sweet
容斥 #include<cstdio> using namespace std; int a,b,n,m[15]; long long ans=0,mod=2004; long long ...
- 【BZOJ 3027】 3027: [Ceoi2004]Sweet (容斥原理+组合计数)
3027: [Ceoi2004]Sweet Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 71 Solved: 34 Description John ...
- [BZOJ3027][Ceoi2004]Sweet 容斥+组合数
3027: [Ceoi2004]Sweet Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 135 Solved: 66[Submit][Status] ...
- 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 ...
- 2018.12.30 bzoj3027: [Ceoi2004]Sweet(生成函数+搜索)
传送门 生成函数好题. 题意简述:给出n个盒子,第iii个盒子里有mim_imi颗相同的糖(但不同盒子中的糖不相同),问有多少种选法可以从各盒子中选出数量在[a,b][a,b][a,b]之间的糖果. ...
- BZOJ 3027 Sweets 生成函数,容斥
Description John得到了n罐糖果.不同的糖果罐,糖果的种类不同(即同一个糖果罐里的糖果种类是相同的,不同的糖果罐里的糖果的种类是不同的).第i个糖果罐里有 mi个糖果.John决定吃掉一 ...
随机推荐
- Andrew Ng的机器学习视频文件夹(from coursera, 2014)
第一周: 简单介绍机器学习,有监督学习.无监督学习. 1-1,1-2,1-3,1-4 第二周: 2-1:回归问题举例 2-2:介绍cost function定义. 2-3:在回归函数是一个经过原点的直 ...
- ubuntu如何修改root密码
安装完Ubuntu后忽然意识到没有设置root密码,不知道密码自然就无法进入根用户下.到网上搜了一下,原来是这麽回事.Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码.我们可 ...
- 子结点childNodes
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- HDU 5335 Walk Out(多校)
Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- OpenCV中使用SVM简介
下面这是opencv官方文档中的代码,我加了一部分注释: #include "stdafx.h" #include "opencv2/core/core.hpp" ...
- 李洪强iOS开发之 - enum与typedef enum的用法
李洪强iOS开发之 - enum与typedef enum的用法 01 - 定义枚举类型 上面我们就在ViewController.h定义了一个枚举类型,枚举类型的值默认是连续的自然数,例如例子中的T ...
- [网页游戏开发]容器的使用及自定义Tab,RadioGroup,List,ViewStack
Morn里面,容器和其他普通组件不同,无需皮肤,所以也不能从组件树种拖动创建(Tab,RadioGroup例外),只能转换而来 Morn的容器组件主要有Box,Container,Panel,Tab, ...
- BZOJ 2115: [Wc2011] Xor DFS + 线性基
2115: [Wc2011] Xor Time Limit: 10 Sec Memory Limit: 259 MB Description Input 第一行包含两个整数N和 M, 表示该无向图中 ...
- mongo 原理 Replica Set Oplog
[客户的写请求全部发送至主节点] Primary. The primary receives all write operations. Secondaries. Secondaries replic ...
- C# List Find方法
https://blog.csdn.net/knqiufan/article/details/77847143