【BZOJ】【1272】【BeiJingWC2008】Gate of Babylon
组合数学+容斥原理
Orz zyf-zyf
多重集组合数0.0还带个数限制? ——> 《组合数学》第6章 6.2带重复的组合
组合数还要模P 0.0? ——> Lucas定理
啊……要算组合数啊……除以阶乘神马的太麻烦肿么办?还要模P……没关系~我们可以搞预处理啊= =预处理粗来【阶乘%P】和【阶乘在模P意义下的逆元】
void calc(){
fac[]=;
F(i,,P-) fac[i]=fac[i-]*i%P;
inv[P-]=pow(fac[P-],P-); inv[]=;
D(i,P-,) inv[i]=inv[i+]*(i+)%P;
}
预处理
然后容斥么……反正只有15种暴力容斥搞搞就好了……就是枚举么……dfs一下
/**************************************************************
Problem: 1272
User: Tunix
Language: C++
Result: Accepted
Time:96 ms
Memory:2840 kb
****************************************************************/ //BZOJ 1272
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std; int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>'') {if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<='') {v=v*+ch-''; ch=getchar();}
return v*=sign;
}
/*******************tamplate********************/
typedef long long LL;
const int N=;
LL n,T,m,P,ans,fac[N],inv[N];
int b[];
LL pow(LL a,LL b){
LL r=,base=a;
for(;b;b>>=,base=base*base%P)
if (b&) r=r*base%P;
return r;
}
inline LL c(LL n,LL m){
if (n<m) return ;
if (n<P && m<P) return fac[n]*inv[m]%P*inv[n-m]%P;
return c(n%P,m%P)*c(n/P,m/P)%P;
} void calc(){
fac[]=;
F(i,,P-) fac[i]=fac[i-]*i%P;
inv[P-]=pow(fac[P-],P-); inv[]=;
D(i,P-,) inv[i]=inv[i+]*(i+)%P;
}
void dfs(int x,int w1,LL w2){
if (x==T+){
ans=(ans + w1*(c(m+n-w2,n)-c(n-w2-,n)))%P;
return;
}
dfs(x+,-w1,w2+b[x]+);
dfs(x+,w1,w2);
}
int main(){
// freopen("input.txt","r",stdin);
n=getint(); T=getint(); m=getint(); P=getint();
F(i,,T) b[i]=getint();
calc();
dfs(,,);
printf("%lld\n",(ans+P)%P);
return ;
}
1272: [BeiJingWc2008]Gate Of Babylon
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 197 Solved: 92
[Submit][Status][Discuss]
Description

Input

Output

Sample Input

Sample Output

HINT

Source
【BZOJ】【1272】【BeiJingWC2008】Gate of Babylon的更多相关文章
- 【BZOJ 2754 喵星球上的点名】
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 2512 Solved: 1092[Submit][Status][Discuss] Descript ...
- 【BZOJ 1272】 1272: [BeiJingWc2008]Gate Of Babylon (容斥原理+卢卡斯定理)
1272: [BeiJingWc2008]Gate Of Babylon Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 254 Solved: 12 ...
- 【BZOJ】3052: [wc2013]糖果公园
http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...
- 【BZOJ】3319: 黑白树
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...
- 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...
- 【BZOJ】【1025】【SCOI2009】游戏
DP/整数拆分 整个映射关系可以分解成几个循环(置换群的预备知识?),那么总行数就等于各个循环长度的最小公倍数+1(因为有个第一行的1~N).那么有多少种可能的排数就等于问有多少种可能的最小公倍数. ...
- 【BZOJ】1013: [JSOI2008]球形空间产生器sphere
[BZOJ]1013: [JSOI2008]球形空间产生器sphere 题意:给n+1个n维的点的坐标,要你求出一个到这n+1个点距离相等的点的坐标: 思路:高斯消元即第i个点和第i+1个点处理出一个 ...
- 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...
- 【BZOJ】【3697】采药人的路径&【3127】【USACO2013 Open】Yin and Yang
点分治 Orz hzwer 倒是比较好想到点分治……然而在方案统计这里,我犯了两个错误…… 1.我比较傻逼的想的是:通过儿子来更新父亲,也就是统计以x为根的子树中xxxx的路径有多少条……这样转移. ...
随机推荐
- INSERT IGNORE 与 INSERT INTO的区别
例 insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据: insert ignore into table(name) select name from table2 例 ...
- 获取一年时间的sql
select a.day, to_char(a.day, 'day') as dd, 1 as flag,to_char(a.day,'YYYY-MM-DD') from ( SELECT TO_DA ...
- iOS开发中的那些小技巧
前言:今天在写代码的过程中遇到一个需要修改系统navigationBar的背景色,我起初用的是barTintColor去修改但是防不住系统点击按钮的时候会有一个渲染高亮的效果,调了好久没有达到自己想要 ...
- 关联表映射 Association Table Mapping
把关联保存为一个表,存储关联表的外键 在对象中,使用集合作为域值,来处理多值域. 而在DB中,只能有单值域. 外键映射的核心,是在关联关系的单值端使用外键来维持联系. 而在多对多的关联关系中,已经不存 ...
- 单一职责原则(SRP)
一个类应仅有一个引起它变化的原因. 内聚性. 每个Responsibility都是变化的一个轴线.当需求变化时,该变化会反映为类的职责的变化 当一个类耦合了多个职责时,一个职责的变化会消弱或抑制其他职 ...
- 了解GDAL的图像处理/Python
GDAL是一个操作各种栅格地理数据格式的库.包括读取.写入.转换.处理各种栅格数据格式(有些特定的格式对一些操作如写入等不支持).它使用了一个单一的抽象数据模型就支持了大多数的栅格数据(GIS对栅格, ...
- LLVM language 参考手册 翻译停止相关
再翻译LLVM language 参考手册的时候,个人感觉很多东西都不是很懂,因此打算学习完编译原理后再去继续研究翻译,多有不便望见谅
- SAP存货账龄分析之库存获取
前段时间上面要求做一个历史库存账龄分析,取历史数据的时候一直纠结于用mchb/mchbh/mska/mskah等实时和历史库存表,然而试来试去还是不能成功,于是决定DEBUG下MB5B的源代码,测试了 ...
- C# 玩家昵称屏蔽敏感字眼
功能:使用正则 对玩家昵称处理,如果含有 屏蔽字库里的敏感字眼进行屏蔽.已封装成dll 1.屏蔽字库处理成所需要的正则格式:(所需正则表达式格式:".*((XX)|(XX)|(XX)|.. ...
- 【风马一族_git_github】git的工作流程
git有三个区域(如图): 基本信息设置 1)设置用户名 git config --global user.name "帐号名" 2)设置用户名邮箱 git config ...