当前位置: 首页 > news >正文

[题解]P7074 [CSP-J 2020] 方格取数

P7074 [CSP-J 2020] 方格取数

如果设 \(f_{i,j}\)\((1,1)\)\((i,j)\) 的最大权值和,上下相邻的两个元素的转移就是双向的了。有后效性,无法 DP。

image

不过题目说“不能重复经过已经走过的方格”,也就是说每一列只能往一个方向走。

所以可以加一维规定转移方向:\(f_{i,j,k=0/1}\)\(k=0\) 为从下面转移过来,\(k=1\) 为从上面转移过来。

这样 \(f_{i,j,0},f_{i,j,1}\) 的转移就没有后效性了:

\[\large \begin{cases} f_{i,j,0}=\max(f_{i+1,j,0},f_{i,j-1,0},f_{i,j-1,1})\\ f_{i,j,1}=\max(f_{i-1,j,1},f_{i,j-1,0},f_{i,j-1,1}) \end{cases} \]

时间复杂度 \(O(nm)\)

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e3+2;
int n,m,a[N][N],f[N][N][2];
signed main(){cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}memset(f,-0x3f,sizeof f);f[1][1][0]=f[1][1][1]=a[1][1];for(int i=2;i<=n;i++) f[i][1][1]=f[i-1][1][1]+a[i][1];for(int i=2;i<=m;i++){for(int j=1;j<=n;j++){f[j][i][1]=max({f[j-1][i][1],f[j][i-1][0],f[j][i-1][1]})+a[j][i];}for(int j=n;j>=1;j--){f[j][i][0]=max({f[j+1][i][0],f[j][i-1][0],f[j][i-1][1]})+a[j][i];}}cout<<f[n][m][1]<<"\n";return 0;
}

或者写记搜:

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e3+2,inf=1e15;
int n,m,a[N][N],f[N][N][2];
inline int dfs(int x,int y,bool d){if(x<1||x>n||y<1||y>m) return -inf;if(f[x][y][d]^(-inf)) return f[x][y][d];if(d) f[x][y][d]=max({dfs(x-1,y,1),dfs(x,y-1,0),dfs(x,y-1,1)});else  f[x][y][d]=max({dfs(x+1,y,0),dfs(x,y-1,0),dfs(x,y-1,1)});f[x][y][d]+=a[x][y];return f[x][y][d];
}
signed main(){cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];f[i][j][0]=f[i][j][1]=-inf;}}f[1][1][0]=f[1][1][1]=a[1][1];cout<<dfs(n,m,1)<<"\n";return 0;
}
http://www.hn-smt.com/news/438/

相关文章:

  • 二分查找边界
  • P3232 [HNOI2013] 游走
  • 软件工程学习日志2025.10.27
  • 深入解析:TCP/IP 四层模型协作流程详解
  • Windows全版本激活教程(仅供测试)
  • 10月27日
  • javascript构造对象数组向服务器端传输
  • 10.25 CSP-S 模拟赛
  • 鲜花10/27
  • 读《程序员的修炼之路:从小工到专家》有感
  • 想让默认头像不再千篇一律,就顺手复刻了一下 GitHub 的思路
  • java(3)基础规范
  • 读书日记3
  • Tuack 生成 OI 比赛题目 PDF 笔记
  • 数据库三大范式、Union和Union all的区别
  • CSP-S2025 游记
  • 「LG3600-随机数生成器」题解
  • MathType7下载包安装教程2025最新下载+安装+汉化激活(附安装包,超详细)
  • 2025强网杯ezphp复现
  • 漏洞报告被拒绝的常见原因及避免方法
  • 【IEEE出版 | 重庆邮电大学主办 | 多届次、高层次】第六届人工智能与计算机工程国际学术会议(ICAICE 2025)
  • Docker容器里面部署的Jenkins的Java17升级到21版本(无需删除之前容器,内部在线升级) - 攻城狮
  • 报表知识
  • 渐进过程中大O与小o混用
  • 消息队列的有序性
  • 【LTDC】DMA2D —— 嵌入式系统的 GPU
  • unity管理器设计:Manager of Managers
  • iview table 排序 columns 里面写 sortable: custom 不要写 sortable: true 不然会进行二次内部排序序号等 字段。
  • 本地运行nginx服务,模拟线上环境访问项目
  • git提交远程项目步骤