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] 凫趋雀跃 解题报告(容斥原理)的更多相关文章

  1. [JZOJ 5912] [NOIP2018模拟10.18] VanUSee 解题报告 (KMP+博弈)

    题目链接: https://jzoj.net/senior/#contest/show/2530/2 题目: 众所周知,cqf童鞋对哲学有着深入的理解和认识,并常常将哲学思想应用在实际生活中,例如锻炼 ...

  2. [JZOJ 5910] [NOIP2018模拟10.18] DuLiu 解题报告 (并查集+思维)

    题目链接: https://jzoj.net/senior/#contest/show/2530/0 题目: LF是毒瘤出题人中AK IOI2019,不屑于参加NOI的唯一的人.他对人说话,总是满口垃 ...

  3. [JZOJ 5895] [NOIP2018模拟10.5] 旅游 解题报告 (欧拉回路+最小生成树)

    题目链接: https://jzoj.net/senior/#main/show/5895 题目: 题解: 有一个好像比较显然的性质,就是每条边最多经过两次 那么我们考虑哪些边需要经过两次.我们把需要 ...

  4. [JZOJ 5906] [NOIP2018模拟10.15] 传送门 解题报告(树形DP)

    题目链接: https://jzoj.net/senior/#contest/show/2528/2 题目: 8102年,Normalgod在GLaDOS的帮助下,研制出了传送枪.但GLaDOS想把传 ...

  5. [JZOJ 5911] [NOIP2018模拟10.18] Travel 解题报告 (期望+树形DP)

    题目链接: http://172.16.0.132/senior/#contest/show/2530/1 题目: EZ同学家里非常富有,但又极其的谦虚,说话又好听,是个不可多得的人才.        ...

  6. [JZOJ 5894] [NOIP2018模拟10.5] 同余方程 解题报告(容斥)

    题目链接: http://172.16.0.132/senior/#contest/show/2523/0 题目: 题解:(部分内容来自https://blog.csdn.net/gmh77/arti ...

  7. 模拟赛T2 交换 解题报告

    模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...

  8. [jzoj 5177] [NOIP2017提高组模拟6.28] TRAVEL 解题报告 (二分)

    题目链接: https://jzoj.net/senior/#main/show/5177 题目: 题解: 首先选出的泡泡怪一定是连续的一段 L,R 然后 L 一定属于虫洞左边界中的某一个 R 也同样 ...

  9. [jzoj 4668] [NOIP2016提高A组模拟7.19] 腐败 解题报告(质数分类+慢速乘)

    题目链接: http://172.16.0.132/senior/#main/show/4668 题目: 题解: 考虑把A数组里的每个元素分解质因数,对于每个质因数开一个vector存一下包含这个质因 ...

随机推荐

  1. WPF 漏斗控件 等待沙漏效果

    由于WPF中不支持gif图片因此要实现一个漏斗沙漏效果有点小麻烦. 网上有一款开源的控件 理论上完全开源 官网 http://wpfspark.codeplex.com/贴一下效果图 大家感觉需要就在 ...

  2. maven nexus memory optimization

    #链接地址:https://help.sonatype.com/repomanager3/system-requirements#filehandles While starting Nexus I ...

  3. BZOJ1096: [ZJOI2007]仓库建设(dp+斜率优化)

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5790  Solved: 2597[Submit][Status][Discuss] Descript ...

  4. AngularJs轻松入门

    AngularJs轻松入门系列博文:http://blog.csdn.net/column/details/angular.html AngularJs轻松入门(一)创建第一个应用 AngularJs ...

  5. 打开word2010每次都要配置进度的解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 不小心把ms office2010搞坏了,于是重装ms office2010,结果一打开word文档时总是出现下面的对 ...

  6. Linker scripts之SECTIONS

    1 Purpose The linker script describes how the sections in the input files should be mapped into the ...

  7. App测试- adb monkey测试

    一. 安装和配置SDK 1. 下载Android SDK并解压.如下图:(如果不存在tool和platform_tool,请点击SDK Manager在线下载和更新) 2.下载完成后,配置SDK环境变 ...

  8. 如何激活优动漫PAINT,获取优动漫PAINT序列号

    优动漫PAINT也就是我们常说的clip studio paint(CSP)的中文版本,它是一款功能强大的漫画.插画绘制软件,所有动漫和漫画插件使用帮助你更加便捷的创作有质量的二次元素材,是各位喜欢动 ...

  9. python与图灵机器人交互(WXPY版本)

    开发者账号:wujunfeng , 开发者key:官网申请  #!/usr/bin/env python#-*- coding:utf-8 -*- @Author : wujf @Time:2018/ ...

  10. python实现定时发送消息

    #!/usr/bin/env python#-*- coding:utf-8 -*- @Author : wujf @Time:2018/8/21 15:59# 自动发送消息from threadin ...