Gate Of Babylon bzoj 1272
Gate Of Babylon
【问题描述】

【输入格式】

【输出格式】

【样例输入】
2 1 10 13
3
【样例输出】
12
【样例说明】

【数据范围】

题解:
答案为全部没有限制的方案-有一个超过限制的方案数+有两个超过限制的方案数-有三个超过限制的方案数······
解释一下:
我们先算出所有的方案数,减去每一种超级神器超过限制的方案
而这其中有同时两种神器都都不满足条件的方案
这种方案被减了两次
那么加上有两个超过限制的方案数
有两个超过限制的方案数中有三种同时超过限制的方案数
并且有一种超过限制的方案数中又含有了有三种同时超过的方案数
那么再减去有三种超过限制的方案数
接下来同理······
我们发现答案式子中有奇数个超过限制的方案数为减法,而有偶数个超过限制的方案数为加法
考虑直接Dfs
n组无限制的数中选m个的方案数:C(n+m-1,m)
那么不超过m个的方案数为:C(n+0-1,0)+C(n+1-1,1)+C(n+2-1,2)+···+C(n+m-1,m)=C(n+m,m) (C(n,m)=C(n-1,m-1)+C(n-1,m))
Lucas定理:C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
long long n, m, t, p;
inline int Get()
{
int x = ;
char c = getchar();
while('' > c || c > '') c = getchar();
while('' <= c && c <= '')
{
x = (x << ) + (x << ) + c - '';
c = getchar();
}
return x;
}
inline long long Pow(long long m, long long n)
{
long long res = ;
long long sum = m;
while(n)
{
if(n & ) res = (res * sum) % p;
sum = (sum % p * sum % p) % p;
n >>= ;
}
return res;
}
long long ans;
long long c[];
long long su[];
inline long long Zhs(long long a, long long b)
{
if(a < b) return ;
return ((su[a] % p) * Pow((su[b] % p) * (su[a - b] % p) % p, p - )) % p;
}
inline long long Lu(long long a, long long b)
{
if(a < b) return ;
long long res = ;
while(a && b)
{
res = (res * Zhs(a % p, b % p)) % p;
a /= p;
b /= p;
}
return res;
}
void Dfs(int x, long long o, long long w)
{
if(x == t + )
{
ans = ((ans + o * (Lu(m + n - w, m - w) % p)) % p + p) % p;
return;
}
Dfs(x + , o, w);
Dfs(x + , -o, w + c[x] + );
}
int main()
{
n = Get(), t = Get(), m = Get(), p = Get();
for(int i = ; i <= t; ++i) c[i] = Get();
su[] = ;
for(int i = ; i <= p; ++i) su[i] = (su[i - ] * i) % p;
Dfs(, , );
printf("%lld", ans);
}
Gate Of Babylon bzoj 1272的更多相关文章
- 【BZOJ】【1272】【BeiJingWC2008】Gate of Babylon
组合数学+容斥原理 Orz zyf-zyf 多重集组合数0.0还带个数限制? ——> <组合数学>第6章 6.2带重复的组合 组合数还要模P 0.0? ——> Lucas ...
- 【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 ...
- 【BZOJ1272】Gate Of Babylon [Lucas][组合数][逆元]
Gate Of Babylon Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description Input ...
- ●BZOJ 1272 [BeiJingWc2008]Gate Of Babylon
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1272 题解: 容斥,Lucas定理本题的容斥考虑类似 [BZOJ 1042 [HAOI200 ...
- bzoj 1272: [BeiJingWc2008]Gate Of Babylon
Description Solution 如果没有限制,答案就是 \(\sum_{i=0}^{m}C(n+i-1,i)\) 表示枚举每一次取的个数,且不超过 \(m\),方案数为可重组合 发现这个东西 ...
- Gate Of Babylon(bzoj 1272)
Description Input Output Sample Input Sample Output 12 HINT /* 容斥+lucas+乘法逆元 首先,看到有限制的只有15个,因此可以用容斥原 ...
- bzoj1272 Gate Of Babylon(计数方法+Lucas定理+乘法逆元)
Description Input Output Sample Input 2 1 10 13 3 Sample Output 12 Source 看到t很小,想到用容斥原理,推一下发现n种数中选m个 ...
- bzoj1272 Gate Of Babylon
[问题描述] [输入格式] [输出格式] [样例输入] 2 1 10 13 3 [样例输出] 12 [样例说明] [数据范围] 先容斥,考虑枚举哪些条件强制不满足,即直接选出b[i]+1件宝具 假设强 ...
随机推荐
- ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器
原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...
- ASP.NET MVC关于Ajax以及Jquery的无限级联动
---恢复内容开始--- 第一次发表博文,发表博文的目的是巩固自己的技术,也能够共享给大家.写的不好的地方,希望大家多给给意见.老司机勿喷 数据结构() NewsTypeId 新闻ID, NewsTy ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- firebug不能加载JS文件 ,无法进行JS脚本调试
提示: 本页面不包含 Javascript 如果 <script> 标签有 "type" 属性,其值应为 "text/javascript" 或者& ...
- 用SecureCRT连接虚拟机中的Linux系统(Ubuntu)
今天突然练习linux命令行的时候,想在window中联系linux命令行.经过一番dudu找到了一个不错的的工具(SecureCRT--意思安全)就是用SSH链接linux主机.推荐大家使用.毕竟w ...
- click事件的累加绑定,绑定一次点击事件,执行多次
最近做项目为一个添加按钮绑定点击事件,很简单的一个事情,于是我按照通常做法找到元素,使用jquery的on()方法为元素绑定了点击事件,点击同时发送请求.完成后看效果,第一次点击没有问题.再一次点击后 ...
- .NET跨平台:在Ubuntu上用自己编译的dnx运行ASP.NET 5示例程序
在 Linux Ubuntu 上成功编译 dnx 之后,会在 artifacts/build/ 文件夹中生成 dnx-coreclr-linux-x64/ 与 dnx-mono/ 这2个文件夹,前者是 ...
- 到爱尔兰敲代码 / Come, Coding in Ireland
这是我在都柏林的第四个月,该办的证也都办完了,该安定下来的也安定下来了,所以也简单介绍下到爱尔兰做IT的相关过程和政策. 如果有兴趣在英语环境工作的话,我也可以帮忙推荐或者找找. 去年15年1月正好开 ...
- ABP源码分析三十四:ABP.Web.Mvc
ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...
- APUE中fcntl.h的使用及O_SYNC在Mac与Ubuntu下的测试
此部分测试涉及到APUE V3中,第三章的图3-12到图3-14. 通过fcntl.h提供的功能,修改fd的文件属性,本处增加O_SYNC功能,并测试其效果. 本文涉及代码: tree ch3 ch3 ...