P7074 [CSP-J2020] 方格取数
目录
题目
题目链接
https://www.luogu.com.cn/problem/P7074
思路
用dp[i][j][0]表示在(i,j)从左边来的最大值
用dp[i][j][1]表示在(i,j)从上边来的最大值
用dp[i][j][2]表示在(i,j)从下边来的最大值
详见下图

code
#include<bits/stdc++.h>
#define LL long long
using namespace std;
int n, m;
LL mp[1001][1001];
LL dp[1001][1001][3];
LL dfs(int x, int y, int k) {
if (x < 1 or x > n or y < 1 or y > m) return INT_MIN;//判断是否越界
if (dp[x][y][k] != INT_MIN) return dp[x][y][k];//有没有算过
dp[x][y][k] = mp[x][y];//方便后面加
if (k == 0) {//每一个方向
dp[x][y][k] += max(max(dfs(x, y - 1, 1), dfs(x, y - 1, 0)), dfs(x, y - 1, 2));
return dp[x][y][k];
}
if (k == 1) {//每一个方向
dp[x][y][k] += max(dfs(x - 1, y, 0), dfs(x - 1, y, 1));
return dp[x][y][k];
}
if (k == 2) {//每一个方向
dp[x][y][k] += max(dfs(x + 1, y, 0), dfs(x + 1, y, 2));
return dp[x][y][k];
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> mp[i][j];
dp[i][j][0] = dp[i][j][1] = dp[i][j][2] = INT_MIN;
}
}
dp[1][1][0] = dp[1][1][1] = dp[1][1][2] = mp[1][1];
cout << max(dfs(n, m, 0), dfs(n, m, 1));//2不用,不可能从下面来
return 0;
}
/*
* 0→
* 1↓
* 2↑
*/
P7074 [CSP-J2020] 方格取数的更多相关文章
- HDU 1565&1569 方格取数系列(状压DP或者最大流)
方格取数(2) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- NOIP200003方格取数
NOIP200003方格取数 难度级别: D: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 XYZ 是首师大附中信息技术团编 ...
- vijos 1563 疯狂的方格取数
P1653疯狂的方格取数 Accepted 标签:天才的talent[显示标签] 背景 Due to the talent of talent123,当talent123做完NOIP考了两次的二取 ...
- [HDU 1565+1569] 方格取数
HDU 1565 方格取数(1) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 网络流(最大流) HDU 1565 方格取数(1) HDU 1569 方格取数(2)
HDU 1565 方格取数(1) 给你一个n*n的格子的棋盘,每个格子里面有一个非负数.从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的 ...
- HDU-1565 方格取数(1)
http://acm.hdu.edu.cn/showproblem.php?pid=1565 方格取数(1) Time Limit: 10000/5000 MS (Java/Others) Me ...
- BZOJ 1475: 方格取数( 网络流 )
本来想写道水题....结果调了这么久!就是一个 define 里面少加了个括号 ! 二分图最大点权独立集...黑白染色一下 , 然后建图 : S -> black_node , white_no ...
- [动态规划]P1004 方格取数
---恢复内容开始--- 题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 ...
- P2045 方格取数加强版
P2045 方格取数加强版 题目描述 给出一个n*n的矩阵,每一格有一个非负整数Aij,(Aij <= 1000)现在从(1,1)出发,可以往右或者往下走,最后到达(n,n),每达到一格,把该格 ...
- 线性规划与网络流24题●09方格取数问题&13星际转移问题
●(做codevs1908时,发现测试数据也涵盖了1907,想要一并做了,但因为“技术”不佳,搞了一上午) ●09方格取数问题(codevs1907 方格取数3) 想了半天,也没成功建好图: 无奈下 ...
随机推荐
- Filters in ASP.NET Core(Net6之过滤器)
Filters in ASP.NET Core 如果觉得样式不好:跳转即可 (md文件复制过来有些样式会不一样) 原文地址:https://lifengying.site/archives/net6% ...
- Linux系统Shell脚本第一章:Shell脚本基础及时间同步
目录 一.Shell脚本基础 1.Shell作用 2.什么是Shell脚本及处理逻辑 3.shell脚本基本格式 4. shell脚本执行方式 5.实操演示 二.Shell脚本中的变量 1.变量的作用 ...
- unity 扇形范围检测目标
第一种 代码方法 传入目标点测试即可 private float ScopeDistance = 2f;//扇形距离 private float ScopeJiaodu = 120;//扇形的角度 / ...
- url 编码解码
from urllib import parse#url编码url = 'http://www.baidu.com?query = python基础教程'url_str = parse.quote_p ...
- LoadRunner参数和变量之间的转换
这是用LoadRunner自定义监控Tomcat的脚本为基础而写的脚本.阐述了参数相互之间以及参数与变量之间复制传递原理.下面的代码注释是按照自己的理解写的,正确性不一定保证. Action() { ...
- Visusl Studio使用技巧
一.快捷键的使用 1.使用Ctrl+K,Ctrl+E,可以清理代码,包括清理无用的using和对齐代码: 也可以使用快捷按钮实现该功能,如下图: 2.使用Ctrl+K,Ctrl+D,可以对齐代码 建议 ...
- SOAMANAGER 500 ERROR
.调查原因是 SICF的服务有一个被开启了,取消激活就能解决这个问题. 可能的原因是在激活fiori的时候会自动激活
- demo code
using System.Reflection; // 引用这个才能使用Missing字段 namespace hello{ public partial class Form1 : Form ...
- 13-之容器资源需求、资源限制及Metric-server(Heapster)
目录 容器资源需求.资源限制及Heapster Heapster 资源指标API及自定义指标API k8s-promtheus监控部署 node-exporter prometheus kube-st ...
- 音视频技术入门课- 05 使用FFmpeg与OBS进行直播推流
做直播推流的前提是要有直播服务器接收直播流,所以需要我们自己建设一个流媒体服务器. 流媒体服务器SRS SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SR ...