[P1373]小a和uim之大逃离
题目背景
小a和uim来到雨林中探险。突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声。刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个披头散发、青面獠牙的怪物,低沉着声音说:“呵呵,既然你们来到这,只能活下来一个!”。小a和他的小伙伴都惊呆了!
题目描述
瞬间,地面上出现了一个n*m的巨幅矩阵,矩阵的每个格子上有一坨0~k不等量的魔液。怪物各给了小a和uim一个魔瓶,说道,你们可以从矩阵的任一个格子开始,每次向右或向下走一步,从任一个格子结束。开始时小a用魔瓶吸收地面上的魔液,下一步由uim吸收,如此交替下去,并且要求最后一步必须由uim吸收。魔瓶只有k的容量,也就是说,如果装了k+1那么魔瓶会被清空成零,如果装了k+2就只剩下1,依次类推。怪物还说道,最后谁的魔瓶装的魔液多,谁就能活下来。小a和uim感情深厚,情同手足,怎能忍心让小伙伴离自己而去呢?沉默片刻,小a灵机一动,如果他俩的魔瓶中魔液一样多,不就都能活下来了吗?小a和他的小伙伴都笑呆了!
现在他想知道他们都能活下来有多少种方法。
输入输出格式
输入格式:
第一行,三个空格隔开的整数n,m,k
接下来n行,m列,表示矩阵每一个的魔液量。同一行的数字用空格隔开。
输出格式:
一个整数,表示方法数。由于可能很大,输出对1 000 000 007取余后的结果。
一开始读错题了==,题意是把两个人绑在一起走,问最后魔液相等的方案数
其实知道这个题的题意后这个题目就不难做了,显然这是一道$dp$题,对于地图的题目显然我们要把坐标压进状态,然后是每个人的魔液数量,以及该轮到哪个人采集
但把两个人的魔液数都放进状态显然MLE,我们再仔细考虑,显然我们关心的并不是每个人的数量,而是他们的差值!
我们设$dp[i][j][k][l]$表示到$(i,j)$点差值为$k$该轮到谁采集的方案数,然后从上方或左方直接转移即可
代码:
1 #include<iostream> 2 #include<cstdio> 3 #define mod 1000000007 4 using namespace std; 5 int n,m,k,ans; 6 int a[801][801]; 7 int dp[801][801][20][2]; 8 int main() 9 { 10 scanf("%d%d%d",&n,&m,&k);k++; 11 for(int i=1;i<=n;i++) 12 for(int j=1;j<=m;j++) 13 { 14 scanf("%d",&a[i][j]); 15 a[i][j]%=mod; 16 dp[i][j][a[i][j]][0]=1; 17 } 18 for(int i=1;i<=n;i++) 19 for(int j=1;j<=m;j++) 20 for(int l=0;l<=k;l++) 21 { 22 if(i-1>0) 23 { 24 (dp[i][j][l][0]+=dp[i-1][j][(l-a[i][j]+k)%k][1])%=mod; 25 (dp[i][j][l][1]+=dp[i-1][j][(l+a[i][j]+k)%k][0])%=mod; 26 } 27 if(j-1>0) 28 { 29 (dp[i][j][l][0]+=dp[i][j-1][(l-a[i][j]+k)%k][1])%=mod; 30 (dp[i][j][l][1]+=dp[i][j-1][(l+a[i][j]+k)%k][0])%=mod; 31 } 32 } 33 for(int i=1;i<=n;i++) 34 for(int j=1;j<=m;j++) 35 (ans+=dp[i][j][0][1])%=mod; 36 printf("%d",ans); 37 return 0; 38 }
转载于:https://www.cnblogs.com/Slrslr/p/9678203.html
[P1373]小a和uim之大逃离相关推荐
- 洛古 P1373 小a和uim之大逃离
P1373 小a和uim之大逃离 题目提供者lzn 标签 动态规划 洛谷原创 难度 提高+/省选- 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电 ...
- 洛谷P1373 小a和uim之大逃离
P1373 小a和uim之大逃离 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从 ...
- luogu P1373 小a和uim之大逃离
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
- 【题解】洛谷P1373 小a和uim之大逃离(dp 递推)
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
- LUOGU P1373 小a和uim之大逃离 题解
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
- 洛谷P1373 小a和uim之大逃离 动态规划
题解 我们可以先简单的想一种状态,也就是dp[i][j][x][y][t]dp[i][j][x][y][t]dp[i][j][x][y][t],这是最暴力的. 当t=0t = 0t=0时,表示小a处于 ...
- 小a和uim之大逃离,洛谷之提高历练地,动态规划TG.lv(1)(3-2)
正题 第二题:小a和uim之大逃离 这题有点烦,但是我们可以从k入手,大小为k的魔瓶,可以装的容量为0到k,那么相当于我们每一次mod 一下k 就行了. 我们当然也可以从小a和小uim的魔瓶差入手,我 ...
- 洛谷1373 小a和uim之大逃离
https://www.luogu.org/problem/show?pid=1373 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声 ...
- 洛谷1373小a和uim之大逃离
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
最新文章
- 第四周实践项目6 循环双链表应用
- 大数据统计分析平台之一、Kafka单机搭建
- Eureka常用配置详解
- python中max函数用法_Python中max函数用法实例分析
- 损失函数(Loss function) 和 代价函数(Cost function)
- 使用 nvm 安装 nodejs 和 npm
- JS DOM事件(常用消息、常用事件、addEventListener、removeEventListener)
- 基于JAVA+SpringMVC+Mybatis+MYSQL的大学生考勤管理系统及智能分析系统
- Python标准库中的shutil
- javamelody 使用
- VS无法启动程序调试监视器未能启动
- Java精进-20分钟学会mybatis使用
- [已解决]VitrualBox 启动linux虚拟机后,无法访问网络解决方法
- 活动|QuarkChain 高TPS悬赏令:看你能有多快!2.4BTC等你拿!
- 云原生数据库-Amazon RDS
- GoldenDict启动进入后台 Ubuntu
- 鸡啄米编程入门教程代码实现
- ceph osd为down的情况
- 存储微博内容小技巧--印象笔记
- FFmpeg的HEVC解码器源代码简单分析:CTU解码(CTU Decode)部分-TU
热门文章
- Linux搭建迅搜( Xunsearch )
- 论文笔记 | Determinants of Cross-Border Mergers and Acquisitions
- Qt Quick实现的涂鸦程序
- 怎么用博客来把自己网站“养大”
- Burp Scanner Report
- 学习ES6 The Dope Way Part I:const,let&var
- java streamhandler_使用Handler来增强Web服务的功能
- 宇视NVR录像机,录像下载过程中,查询录像搜索列别里面为空
- 8位并行左移串行转换电路_双向移位寄存器 8位双向移位寄存器电路设计
- python中变量,Python中的变量、数据类型、运算符