[jzoj 5664] [GDOI2018Day1模拟4.6] 凫趋雀跃 解题报告(容斥原理)
interlinkage:
https://jzoj.net/senior/#contest/show/2703/3
description:


solution:
考虑容斥原理,枚举不合法的走的步数
$f_{p,x,y}$表示任意走$p$步走到$x$,$y$的方案数
$g_{p,x}$表示走不合法的步走$p$步走到$(10*x,10*x)$的方案数
$g$数组很好得到,发现$f$数组直接暴力转移时间复杂度不对
但是随意走在横轴和竖轴上是独立的,因此我们可以设$fx_{p,x}$表示在横轴上走$p$步走到位置$x$的方案数,同理得到$fy$数组
$f_{p,x,y}=fx_{p,x}*fy_{p,y}$
那么$ans=\sum_{i=0}^{R}\dbinom{R}{i}\sum_{z=0}^{min(Tx,Ty)/10}g_{i,z}*f_{R-i,Tx-10*z,Ty-10*z}$
注意因为零向量不可走,方便处理我们将它加入不可走的数组中即可,因为$0 \mod 10=0$也是成立的
code:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll; const int M=+;
const int mo=1e4+;
int Tx,Ty,Mx,My,R,K;
int fx[M][M],fy[M][M],sum[M],kk[M],g[M][M],C[M][M];
int main()
{
freopen("jump.in","r",stdin);
freopen("jump.out","w",stdout);
scanf("%d%d%d%d%d%d",&Tx,&Ty,&Mx,&My,&R,&K);
for (int j=;j<=Tx;j++) sum[j]=;
for (int i=;i<=R;i++)
{
for (int j=;j<=Tx;j++)
{
if (j>Mx) fx[i][j]=((sum[j]-sum[j-Mx-])%mo+mo)%mo;
else fx[i][j]=sum[j];
}
sum[]=fx[i][];
for (int j=;j<=Tx;j++) sum[j]=(sum[j-]+fx[i][j])%mo;
}
for (int j=;j<=Ty;j++) sum[j]=;
for (int i=;i<=R;i++)
{
for (int j=;j<=Ty;j++)
{
if (j>My) fy[i][j]=((sum[j]-sum[j-My-])%mo+mo)%mo;
else fy[i][j]=sum[j];
}
sum[]=fy[i][];
for (int j=;j<=Ty;j++) sum[j]=(sum[j-]+fy[i][j])%mo;
}
for (int i=;i<=K;i++) scanf("%d",&kk[i]);kk[++K]=;
g[][]=;
for (int k=;k<=R;k++)
{
for (int i=;*i<=min(Tx,Ty);i++)
{
for (int j=;j<=K;j++)
if (i>=kk[j]/)
{
(g[k][i]+=g[k-][i-kk[j]/])%=mo;
}
}
}
C[][]=;
for (int i=;i<=R;i++)
{
C[i][]=;
for (int j=;j<=i;j++) C[i][j]=(C[i-][j-]+C[i-][j])%mo;
}
int ans=;
for (int i=;i<=R;i++)
{
if (i&)
{
for (int z=;z*<=min(Tx,Ty);z++) (ans-=1ll*C[R][i]*g[i][z]%mo*fx[R-i][Tx-*z]%mo*fy[R-i][Ty-*z]%mo)%=mo;
}
else
{
for (int z=;z*<=min(Tx,Ty);z++) (ans+=1ll*C[R][i]*g[i][z]%mo*fx[R-i][Tx-*z]%mo*fy[R-i][Ty-*z]%mo)%=mo;
}
}
ans=(ans%mo+mo)%mo;
printf("%d\n",ans);
return ;
}
[jzoj 5664] [GDOI2018Day1模拟4.6] 凫趋雀跃 解题报告(容斥原理)的更多相关文章
- [JZOJ 5912] [NOIP2018模拟10.18] VanUSee 解题报告 (KMP+博弈)
题目链接: https://jzoj.net/senior/#contest/show/2530/2 题目: 众所周知,cqf童鞋对哲学有着深入的理解和认识,并常常将哲学思想应用在实际生活中,例如锻炼 ...
- [JZOJ 5910] [NOIP2018模拟10.18] DuLiu 解题报告 (并查集+思维)
题目链接: https://jzoj.net/senior/#contest/show/2530/0 题目: LF是毒瘤出题人中AK IOI2019,不屑于参加NOI的唯一的人.他对人说话,总是满口垃 ...
- [JZOJ 5895] [NOIP2018模拟10.5] 旅游 解题报告 (欧拉回路+最小生成树)
题目链接: https://jzoj.net/senior/#main/show/5895 题目: 题解: 有一个好像比较显然的性质,就是每条边最多经过两次 那么我们考虑哪些边需要经过两次.我们把需要 ...
- [JZOJ 5906] [NOIP2018模拟10.15] 传送门 解题报告(树形DP)
题目链接: https://jzoj.net/senior/#contest/show/2528/2 题目: 8102年,Normalgod在GLaDOS的帮助下,研制出了传送枪.但GLaDOS想把传 ...
- [JZOJ 5911] [NOIP2018模拟10.18] Travel 解题报告 (期望+树形DP)
题目链接: http://172.16.0.132/senior/#contest/show/2530/1 题目: EZ同学家里非常富有,但又极其的谦虚,说话又好听,是个不可多得的人才. ...
- [JZOJ 5894] [NOIP2018模拟10.5] 同余方程 解题报告(容斥)
题目链接: http://172.16.0.132/senior/#contest/show/2523/0 题目: 题解:(部分内容来自https://blog.csdn.net/gmh77/arti ...
- 模拟赛T2 交换 解题报告
模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...
- [jzoj 5177] [NOIP2017提高组模拟6.28] TRAVEL 解题报告 (二分)
题目链接: https://jzoj.net/senior/#main/show/5177 题目: 题解: 首先选出的泡泡怪一定是连续的一段 L,R 然后 L 一定属于虫洞左边界中的某一个 R 也同样 ...
- [jzoj 4668] [NOIP2016提高A组模拟7.19] 腐败 解题报告(质数分类+慢速乘)
题目链接: http://172.16.0.132/senior/#main/show/4668 题目: 题解: 考虑把A数组里的每个元素分解质因数,对于每个质因数开一个vector存一下包含这个质因 ...
随机推荐
- poj1094Sorting It All Out 拓扑排序
做拓扑排序的题目,首先要知道两条定理: 1.最后得到的拓扑数组的元素个数如果小于n,则不存在拓扑序列. (有圈) 2.如果一次入队的入度为零的点数大于1,则拓扑序列不唯一. (关系不确定) 本题有一 ...
- RecyclerView实现终极画廊效果 中间突出并且压住两侧布局
先给大家上个gif 要不然下面很枯燥 忘记原来在哪里看到了..... 这个效果我找了NNNNNN长时间,,,我认为凭我现在的能力 写出来需要好久 所以 退而求其次找大神写好的... 你们不要小看了这个 ...
- 电商物流仓储WMS业务流程
电商物流仓储WMS业务流程 SKU是什么意思? 一文详解电商仓储管理中SKU的含义 从货品角度看,SKU是指单独一种商品,其货品属性已经被确定.只要货品属性有所不同,那么就是不同的SKU. PO信息 ...
- 关于H5移动端开发 iPhone X适配
一. 媒体查询. @media screen and (device-width:375px) and (device-height:812px){ #header { height: 88px; p ...
- 【Oracle】ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
今天数据库在查询数据的时候显示了这个错误: ORA-01157: cannot identify/lock data file 201 - see DBWR trace file ORA-01110: ...
- ML:流形学习
很多原理性的东西需要有基础性的理解,还是篇幅过少,所以讲解的不是特别的清晰. 原文链接:http://blog.sciencenet.cn/blog-722391-583413.html 流形(man ...
- java中4种修饰符访问权限的区别及详解全过程
java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为 ...
- 应运而生! 双11当天处理数据5PB—HiStore助力打造全球最大列存储数据库
阿里巴巴电商业务中历史数据存储与查询相关业务, 大量采用基于列存储技术的HiStore数据库,双11当天HiStore引擎处理数据记录超过6万亿条.原始存储数据量超过5PB.从单日数据处理量上看,该系 ...
- 企业级任务调度框架Quartz(2)-下载和安装Quartz
1.下载和安装 Quartz 根据资料上提供的网址http://www.opensymphony.com/quartz 我们可以下载到Quartz的最新版本1.6.4: 2.下载后包的说明 ...
- oracle AWR详解
原文地址:https://blog.csdn.net/elvis_lfc/article/details/52326148 啥是AWR? =============================== ...