题目背景

小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之大逃离相关推荐

  1. 洛古 P1373 小a和uim之大逃离

    P1373 小a和uim之大逃离 题目提供者lzn 标签 动态规划 洛谷原创 难度 提高+/省选- 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电 ...

  2. 洛谷P1373 小a和uim之大逃离

    P1373 小a和uim之大逃离 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从 ...

  3. luogu P1373 小a和uim之大逃离

    题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...

  4. 【题解】洛谷P1373 小a和uim之大逃离(dp 递推)

    题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...

  5. LUOGU P1373 小a和uim之大逃离 题解

    题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...

  6. 洛谷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处于 ...

  7. 小a和uim之大逃离,洛谷之提高历练地,动态规划TG.lv(1)(3-2)

    正题 第二题:小a和uim之大逃离 这题有点烦,但是我们可以从k入手,大小为k的魔瓶,可以装的容量为0到k,那么相当于我们每一次mod 一下k 就行了. 我们当然也可以从小a和小uim的魔瓶差入手,我 ...

  8. 洛谷1373 小a和uim之大逃离

    https://www.luogu.org/problem/show?pid=1373 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声 ...

  9. 洛谷1373小a和uim之大逃离

    题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...

最新文章

  1. 第四周实践项目6 循环双链表应用
  2. 大数据统计分析平台之一、Kafka单机搭建
  3. Eureka常用配置详解
  4. python中max函数用法_Python中max函数用法实例分析
  5. 损失函数(Loss function) 和 代价函数(Cost function)
  6. 使用 nvm 安装 nodejs 和 npm
  7. JS DOM事件(常用消息、常用事件、addEventListener、removeEventListener)
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的大学生考勤管理系统及智能分析系统
  9. Python标准库中的shutil
  10. javamelody 使用
  11. VS无法启动程序调试监视器未能启动
  12. Java精进-20分钟学会mybatis使用
  13. [已解决]VitrualBox 启动linux虚拟机后,无法访问网络解决方法
  14. 活动|QuarkChain 高TPS悬赏令:看你能有多快!2.4BTC等你拿!
  15. 云原生数据库-Amazon RDS
  16. GoldenDict启动进入后台 Ubuntu
  17. 鸡啄米编程入门教程代码实现
  18. ceph osd为down的情况
  19. 存储微博内容小技巧--印象笔记
  20. FFmpeg的HEVC解码器源代码简单分析:CTU解码(CTU Decode)部分-TU

热门文章

  1. Linux搭建迅搜( Xunsearch )
  2. 论文笔记 | Determinants of Cross-Border Mergers and Acquisitions
  3. Qt Quick实现的涂鸦程序
  4. 怎么用博客来把自己网站“养大”
  5. Burp Scanner Report
  6. 学习ES6 The Dope Way Part I:const,let&var
  7. java streamhandler_使用Handler来增强Web服务的功能
  8. 宇视NVR录像机,录像下载过程中,查询录像搜索列别里面为空
  9. 8位并行左移串行转换电路_双向移位寄存器 8位双向移位寄存器电路设计
  10. python中变量,Python中的变量、数据类型、运算符