题目大意:

每个人a,u在棋盘上可以向右或者向下走,每走到下一步,每个人有两个魔力值,若原始魔力值为a,这一格的魔力值为b,那么

这个人的魔力值就是(a+k)%k,魔力值分别是小a再到小u轮流加。我们规定第一步小a加,第二步小u加。现在问:若最后一步是小u走,且两个人魔力值相同的路径有几个。初始点可以任意选择。

解题思路:

我们可以使用DP因为,明显地每一步可以由两步转移过来,那现在问题是假若状态是:

memo[n][m][l][k][1/0],表示在n行m列,a和u的魔力值分别为k,最后的1表示最后一步由小u走,0表示最后一步由小a走。那么答案就是memo[n][m][l][l][1],可是我们发现这样复杂度会超了,那么有没有更好的表达状态的方法,而且这个状态能够转移的呢?有!我们发现第三和第四个状态可以写为[l-k],两个的魔力之差,而且差的范围是在0-k,那么这复杂度就是O(N*M*K)了

启示:

不要试图从一个状态得到最终值。我们可能会从多个dp状态求和得到最终值。

学会使用差值作为DP的状态。

注意写代码要保持连贯性,首先需要想清楚,其次不要写着写着忽然补充个函数什么的。

#include <bits/stdc++.h>
using namespace std;
const int MAXN=800;
const int MAXK=16;
int chess[MAXN][MAXN];
int memo[MAXN][MAXN][MAXK][2];
int vis[MAXN][MAXN];
int n,m,k;
const int MODN=1e9+7;
const int di[]={0,-1};
const int dj[]={-1,0};
int fir;
int dfs(int i,int j,int diff,int state){//cerrr<<i<<" "<<j<<" "<<diff<<" "<<state<<endl;//int diff=dif(wei[0],wei[1]);if(memo[i][j][diff][state]!=-1 )return memo[i][j][diff][state];if(memo[i][j][diff][state]==-1 )if( diff==(chess[i][j])%k && state ==0)memo[i][j][diff][state]=1;else memo[i][j][diff][state]=0;for(int ii=0;ii<2;ii++){int ni,nj;ni=i+di[ii];nj=j+dj[ii];if(ni<0 || ni>=n||nj<0||nj>=m)continue;if(state==0)memo[i][j][diff][state]=(memo[i][j][diff][state]+dfs(ni,nj,(diff-chess[i][j]+k)%k,!state))%MODN;elsememo[i][j][diff][state]=(memo[i][j][diff][state]+dfs(ni,nj,(diff+chess[i][j])%k,!state))%MODN;}//cerrr<<"memo "<<i<<" "<<j<<" "<<diff<<" "<<state<<" "<<memo[i][j][diff][state]<<endl;return memo[i][j][diff][state];
}
int32_t main(){cin>>n>>m>>k;k=k+1;for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>chess[i][j];memset(memo,-1,sizeof(memo));memset(vis,0,sizeof(vis));for(int i=0;i<n;i++)for(int j=0;j<m;j++){dfs(i,j,0,1);}int sum=0;for(int i=0;i<n;i++)for(int j=0;j<m;j++){if(memo[i][j][0][1]!=-1){sum+=memo[i][j][0][1];sum%=MODN;}}cout<<sum<<endl;return 0;
}

洛谷 P1373 小a和uim之逃离(DP)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

    /* 很容易想到f[i][j][k][l][01] 表示到ij点 两个人得分为kl 01表示这一步谁走的 因为起点不同 路径不同 所以要枚举起点.. 时间复杂度 O(nmk*nmk) 空间复杂度 O( ...

  8. 洛谷p1373 DP

    传送门:洛谷p1373 这道题我原本的想法就是很简单的f[i][j][x][y][0/1];就是以第i,j格为终点的方案数目,可是即wa又mle ,最后看了看题解才比较了解.就是我们不去储存两个人瓶子 ...

  9. 【01背包求方案数模板】洛谷 P1164 小A点菜

    洛谷 P1164 小A点菜 https://www.luogu.org/problemnew/show/P1164 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆, ...

最新文章

  1. zabbix企业应用之监控oracle
  2. UA MATH563 概率论的数学基础 鞅论初步6 鞅的性质 鞅差序列
  3. 忽略某些文件 —— Git 学习笔记 05
  4. 2019公需科目快速学完_【1017丨话题】励志!69岁大爷驾校学车走红,“科目二有信心一次过quot;...
  5. Redis作者谈Redis应用场景
  6. Hadoop(三)MapReduce
  7. android一般会重载7个方法,《Android技术应用》答案(2013年)
  8. include指令与include行为
  9. Pytorch:二、数据加载与数据集的划分(猫狗)
  10. 2022电大国家开放大学网上形考任务-地域文化(本)(山东)非免费(非答案)
  11. 在ubuntu11.10上安装6款顶级漂亮的BURG主题
  12. jsp实现简单用户登录(用户7天内免登录)
  13. qt opengl 3d基本形状-螺旋管
  14. 2021考研肖秀荣大纲解读及复习建议
  15. linux 进程 ssl 状态,Linux进程状态与信号
  16. 压缩png命令cmd_使用pngquant工具对PNG格式图片进行压缩
  17. EST | 西湖大学鞠峰组提出表型宏基因组学用于超广谱抗生素耐药组的高通量环境检测...
  18. Git 报错:fatal: destination path ‘.‘ already exists and is not an empty directory.
  19. (四)基本的SELECT语句
  20. 【CKF3】2015-6-2更新

热门文章

  1. 台式计算机哄哄响怎么回事,电脑机箱嗡嗡响怎么处理?电脑机箱共振如何解决?...
  2. 大前端爱前端学习课程初中高级课程全套106g
  3. 互联网中大学生创业,互联网住家创业创业 - 知乎
  4. C语言编程过河问题,求解:过河有关问题
  5. Windows+Cygwin+NS2安装
  6. 美国CIO直面经济衰退
  7. 盛业首席战略官原野:产业数字化时代,连接比拥有更重要
  8. c 连接oracle数据库字符串,C#数据库连接字符串 - 水泛舟的专栏 - CSDN博客
  9. HDU 5073 Galaxy (2014鞍山现场赛D题)
  10. 神雕侠侣2服务器维护,《神雕侠侣》2021年2月18日更新维护新服开启公告