【动态规划】CDOJ1651 Uestc的命运之旅

要处理从四个角出发的答案。最后枚举那个交点,然后讨论一下来的方向即可。

#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,a[1010][1010],f[4][1010][1010];
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j){
			scanf("%d",&a[i][j]);
		}
	}
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j){
			f[0][i][j]=max(f[0][i][j],f[0][i-1][j]+a[i][j]);
			f[0][i][j]=max(f[0][i][j],f[0][i][j-1]+a[i][j]);
		}
	}
	for(int i=n;i>=1;--i){
		for(int j=1;j<=m;++j){
			f[1][i][j]=max(f[1][i][j],f[1][i+1][j]+a[i][j]);
			f[1][i][j]=max(f[1][i][j],f[1][i][j-1]+a[i][j]);
		}
	}
	for(int i=n;i>=1;--i){
		for(int j=m;j>=1;--j){
			f[2][i][j]=max(f[2][i][j],f[2][i+1][j]+a[i][j]);
			f[2][i][j]=max(f[2][i][j],f[2][i][j+1]+a[i][j]);
		}
	}
	for(int i=1;i<=n;++i){
		for(int j=m;j>=1;--j){
			f[3][i][j]=max(f[3][i][j],f[3][i-1][j]+a[i][j]);
			f[3][i][j]=max(f[3][i][j],f[3][i][j+1]+a[i][j]);
		}
	}
	int ans=0;
	for(int i=2;i<n;++i){
		for(int j=2;j<m;++j){
			ans=max(ans,f[0][i-1][j]+f[2][i+1][j]+f[1][i][j-1]+f[3][i][j+1]);
			ans=max(ans,f[0][i][j-1]+f[2][i][j+1]+f[1][i+1][j]+f[3][i-1][j]);
		}
	}
	printf("%d\n",ans);
}
时间: 2024-08-09 12:23:57

【动态规划】CDOJ1651 Uestc的命运之旅的相关文章

面试经典

题目:最长子串 Minimum Window Substring Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n). For example, S = "ADOBECODEBANC" T = "ABC" Minimum window is "BANC"

HDUOJ----2571(命运)(简单动态规划)

命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8600    Accepted Submission(s): 3032 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关.要知

hdu2571 命运 动态规划Dp

转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2571 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关.要知道,不论何人,若在迷宫中被困1小时以上,则必死无疑! 可怜的yifenfei为了去救MM,义无返顾地跳进了

命运(HDU 2571 简单动态规划)

命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14555    Accepted Submission(s): 5119 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关.要知道

ACM学习历程—UESTC 1218 Pick The Sticks(动态规划)(2015CCPC D)

题目链接:http://acm.uestc.edu.cn/#/problem/show/1218 题目大意就是求n根木棒能不能放进一个容器里,乍一看像01背包,但是容器的两端可以溢出容器,只要两端的木棒的重心还在容器中即可. 首先由于木棒可以两端溢出.一端溢出和不溢出三种情况,所以有状态p(flag, v)表示溢出个数为flag的容量为v的情况下的最值. 于是有: p[2][j] = max(p[2][j], p[2][j-a[i]]+v[i]); p[2][j] = max(p[2][j], 

蒜头君的城堡之旅(动态规划)

题目: 蒜国地域是一个 n 行 m 列的矩阵,下标均从 1 开始.蒜国有个美丽的城堡,在坐标 (n,m) 上,蒜头君在坐标 (1,1) 的位置上.蒜头君打算出发去城堡游玩,游玩结束后返回到起点.在出发去城堡的路上,蒜头君只会选择往下或者往右走,而在返回的路上,蒜头君只会选择往上或者往左走,每次只能走一格.已知每个格子上都有一定数量的蒜味可乐,每个格子至多经过一次. 现在蒜头君请你来帮他计算一下,如何计划来回行程,可以收集到最多的蒜味可乐. 输入格式 第一行输入两个整数 n,m(1≤n,m≤50)

61计蒜客 动态规划基础 蒜头君的城堡之旅

蒜国地域是一个 n 行 m 列的矩阵,下标均从 1 开始.蒜国有个美丽的城堡,在坐标 (n,m) 上,蒜头君在坐标 (1,1) 的位置上.蒜头君打算出发去城堡游玩,游玩结束后返回到起点.在出发去城堡的路上,蒜头君只会选择往下或者往右走,而在返回的路上,蒜头君只会选择往上或者往左走,每次只能走一格.已知每个格子上都有一定数量的蒜味可乐,每个格子至多经过一次. 现在蒜头君请你来帮他计算一下,如何计划来回行程,可以收集到最多的蒜味可乐. 输入格式 第一行输入两个整数 n,m(1≤n,m≤50),表示蒜

hdu2571命运

题目: Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关.要知道,不论何人,若在迷宫中被困1小时以上,则必死无疑! 可怜的yifenfei为了去救MM,义无返顾地跳进了迷宫.让我们一起帮帮执着的他吧! 命运大迷宫可以看成是一个两维的方格阵列,如下图所示: yifenfei一开始在左上角,目的当然是到达右下角的大魔王所在地.迷宫的每一个格子都受

2017 UESTC Training for Dynamic Programming

2017 UESTC Training for Dynamic Programming A    思维, 或 dp, 很有意思 方法1: 构造法:蛇形安排赛程表算法复杂度:O(N^2)将1-N排成两竖列,每一轮同一行的为对手保持1的位置不变,其他位置按顺(逆)时方向依次旋转1    6          1    2          1    3          1    4          1    5      2    5          3    6          4