bzoj 1272: [BeiJingWc2008]Gate Of Babylon
Description


Solution
如果没有限制,答案就是 \(\sum_{i=0}^{m}C(n+i-1,i)\)
表示枚举每一次取的个数,且不超过 \(m\),方案数为可重组合
发现这个东西可以用杨辉三角合并,最终变成 \(C(n+m,m)\)
考虑有限制的情况,直接容斥一下即可,要使得一种物品不合法,我们先强制给他选 \(B_i+1\) 个,剩下的随意选
此题求组合数需要用 \(Lucas\)
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,T,m,mod,a[20],ans=0,Fac[N],inv[N];
inline int C(int a,int b){
if(a<b)return 0;
return 1ll*Fac[a]*inv[b]*inv[a-b]%mod;
}
inline int lucas(int a,int b){
if(a<0 || b<0 || a<b)return 0;
if(a<mod && b<mod)return C(a,b);
return 1ll*lucas(a/mod,b/mod)*C(a%mod,b%mod)%mod;
}
inline void dfs(int x,int o,int t){
if(x==T+1){
ans=(ans+o*lucas(n+m-t,m-t))%mod;
return ;
}
dfs(x+1,-o,t+a[x]+1);
dfs(x+1,o,t);
}
int main(){
freopen("pp.in","r",stdin);
freopen("pp.out","w",stdout);
scanf("%d%d%d%d",&n,&T,&m,&mod);
inv[0]=inv[1]=Fac[0]=Fac[1]=1;
for(int i=2;i<=mod;i++){
Fac[i]=1ll*Fac[i-1]*i%mod;
inv[i]=(-1ll*(mod/i)*inv[mod%i]%mod+mod)%mod;
}
for(int i=2;i<=mod;i++)inv[i]=1ll*inv[i-1]*inv[i]%mod;
for(int i=1;i<=T;i++)scanf("%d",&a[i]);
dfs(1,1,0);
if(ans<0)ans+=mod;
printf("%d\n",ans);
return 0;
}
bzoj 1272: [BeiJingWc2008]Gate Of Babylon的更多相关文章
- ●BZOJ 1272 [BeiJingWc2008]Gate Of Babylon
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1272 题解: 容斥,Lucas定理本题的容斥考虑类似 [BZOJ 1042 [HAOI200 ...
- 【BZOJ 1272】 1272: [BeiJingWc2008]Gate Of Babylon (容斥原理+卢卡斯定理)
1272: [BeiJingWc2008]Gate Of Babylon Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 254 Solved: 12 ...
- BZOJ1272: [BeiJingWc2008]Gate Of Babylon
题解: 多重集合的组合数?还是0-m?有些元素有个数限制? 多重集合的组合数可以插板法,0-m直接利用组合数的公式一遍求出来,个数限制注意到只有15个,那我们就暴力容斥了 AC了真舒畅.. 注意开lo ...
- [BeiJingWc2008]Gate Of Babylon
<基尔伽美修>是人类历史上第一部英雄史诗,两河流域最杰出的文学作品之一.作品讲述了基尔伽美修一生的传奇故事.在动画Fate/staynight中,基尔伽美修与亚瑟王等传说中的英雄人物一起出 ...
- 【BZOJ】【1272】【BeiJingWC2008】Gate of Babylon
组合数学+容斥原理 Orz zyf-zyf 多重集组合数0.0还带个数限制? ——> <组合数学>第6章 6.2带重复的组合 组合数还要模P 0.0? ——> Lucas ...
- Gate Of Babylon bzoj 1272
Gate Of Babylon (1s 128MB) babylon [问题描述] [输入格式] [输出格式] [样例输入] 2 1 10 13 3 [样例输出] 12 [样例说明] [数据范围] 题 ...
- 【BZOJ1272】Gate Of Babylon [Lucas][组合数][逆元]
Gate Of Babylon Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description Input ...
- Gate Of Babylon(bzoj 1272)
Description Input Output Sample Input Sample Output 12 HINT /* 容斥+lucas+乘法逆元 首先,看到有限制的只有15个,因此可以用容斥原 ...
- BZOJ 1270: [BeijingWc2008]雷涛的小猫( dp )
简单的dp.. dp(i,j) = max(dp(x,y))+cnt[i][j], (x,y)->(i,j)是合法路径. 设f(i)= max(dp(x,y))(1≤x≤N, 1≤y≤i), g ...
随机推荐
- Linux下Java通用安装方法
1.到oracle官网下下载对应jdk包,一般为%x64%.tar.gz格式. 2.建立目录: $ mkdir /usr/local/java 3.将压缩包解压至/usr/local/java 4.修 ...
- tableView//collectionView加载时的动画
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:( ...
- 搭建java环境——使用Sublime Text 3(windows环境)
实现sublime Text 3对Java编译执行 参考网址:http://tieba.baidu.com/p/2609515186 1.1直接在安装路径下找到*\Packages\Java.subl ...
- 超绚丽CSS3多色彩发光立方体旋转动画
CSS3添加了几个动画效果的属性,通过设置这些属性,可以做出一些简单的动画效果而不需要再去借助JavaScript.css3动画的属性主要分为三类:transform.transition以及anim ...
- 集合Collection总览
前言 声明,本文使用的是JDK1.8 从今天开始正式去学习Java基础中最重要的东西--->集合 无论在开发中,在面试中这个知识点都是非常非常重要的,因此,我在此花费的时间也是很多,得参阅挺多的 ...
- 【原创】Webpack构建中hash的优化
背景: SPA的vue应用,采用webpack2构建,打包入口为main.js 输出:main模块打包成app.js,公共lib打包成vendor.js,公共样式打包成app.css,运行时依赖打包成 ...
- 分贝块---dBblock
分贝,用英语来表达的话,是decibel,是量度两个相同单位之数量比例的计量单位,主要用于度量声音强度,常用dB表示. 块,block,在百度百科中,指数据库中的最小存储和处理单位,包含块本身的头信息 ...
- Python-字典、集合、字符编码、文件操作整理-Day3
1.字典 1.1.为什么有字典: 有个需求,存所有人的信息 这时候列表就不能轻易的表示完全names = ['stone','liang'] 1.2.元组: 定义符号()t = (1,2,3)tupl ...
- 新概念英语(1-117)Tommy's breakfast
Lesson 117 Tommy's breakfast 汤米的早餐 Listen to the tape then answer this question. What does she mean ...
- hadoop2.6.0实践:003 检查hadoop是否可用
start-dfs.sh start-yarn.sh 1.检查hdfs hdfs dfs -ls / http://localhost:50070 2.运行例子程序 hdfs dfs -ls / hd ...