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) 想了半天,也没成功建好图: 无奈下 ...
随机推荐
- rancher 修改域名
rancher 修改域名 rancher 修改ingress.nginx 对应的域名后 cattle-system 名称空间下的pod 依然是连接旧环境的rancher 域名 解决办法 1. 需要登录 ...
- 基于VS码代码时出现访问错误的个人理解
日常在VS写代码中,有时候我们将写好的代码调试出来会出现有未经处理的异常,在0x00000000XXXX处有未经处理的异常,写入位置0xFFFFFFFFFFFFXX时发生访问冲突. 类似于图中情况,遇 ...
- VUE学习-监听事件
监听事件 事件处理方法可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码. <div id="app"> <button v ...
- golang流程控制if,switch分支
if 分支 if 单分支 if 条件表达式 { 逻辑代码 } package main import "fmt" func main() { //var a int = 9 //i ...
- python时间加减
要用到生成时间,在当前日期前/后xx天.xx小时.xx分钟.xx秒 # coding:utf8 from datetime import datetime, timedelta def gen_dat ...
- rabbitMq客户端连接超时
rabbitMq客户端连接超时 rabbitmq有两个端口号:15672,用户web页面的http连接:5672用户客户端的tcp长连接. 用腾讯云搭建时:需要在防火墙策略处将两个端口都打开.
- Pytest 固件
一.固件使用背景 在执行测试用例时,我们常常需要在测试用例执行的前后去完成一些额外的操作.例如针对于 Web 测试,在用例执行前需要打开浏览器,完成用户登录等一系列前置操作:在用例执行完成后,要清除浏 ...
- 2022-6,flask+vue+uwsgi+nginx,线上部署完整流程打包配置文件
uwsgi配置文件 [uwsgi] # 服务端口号,这里没有设置IP值,默认是加载服务器的IP地址 http = :8000 # flask项目地址 chdir = /home/flask_proje ...
- vs 工具 dumpbin & corflags
dumpbin 查看 dll 接口函数 > dumpbin /exports "/path/to/dll" dumpbin 查看 exe.dll 依赖的动态库 > du ...
- 使用Libusb测试USB device
一. 先准备好测试工具 -- Libusb: 在Linux中使用的话: 首先从 http://www.libusb.org/官网中下载libusb 然后解压之后./configure --> m ...