题目链接:http://hihocoder.com/problemset/problem/1617

题解:一道递推的dp题。这题显然可以考虑两个人同时从起点出发这样就不会重复了设dp[step][i][j]表示走了step步,第一个人在第i行第二个人在第j行第几列就用step减去就行

然后就是简单的递推注意第一个人一定是在第二个人上面的这样才确保不会重复。

#include <iostream>
#include <cstring>
#include <cstdio>
#define inf 0X3f3f3f3f
using namespace std;
int dp[ * ][][];
int a[][] , n;
bool Is(int step , int x , int y) {
int x1 = step - x , y1 = step - y;
return (x1 >= && x1 < n && y1 >= && y1 < n && x >= && x < n && y >= && y < n);
}
int get_val(int step , int x , int y) {
if(Is(step , x , y)) return dp[step][x][y];
return -inf;
}
int main() {
scanf("%d" , &n);
for(int i = ; i < n ; i++) {
for(int j = ; j < n ; j++) {
scanf("%d" , &a[i][j]);
dp[][i][j] = -inf;
}
}
dp[][][] = a[][];
for(int step = ; step <= * n - ; step++) {
for(int i = ; i < n ; i++) {
for(int j = i ; j < n ; j++) {
dp[step][i][j] = -inf;
if(!Is(step , i , j)) continue;
if(i != j) {
dp[step][i][j] = max(dp[step][i][j] , get_val(step - , i - ,j - ));
dp[step][i][j] = max(dp[step][i][j] , get_val(step - , i - , j));
dp[step][i][j] = max(dp[step][i][j] , get_val(step - , i , j - ));
dp[step][i][j] = max(dp[step][i][j] , get_val(step - , i , j));
dp[step][i][j] += a[i][step - i] + a[j][step - j];
}
else {
dp[step][i][j] = max(dp[step][i][j] , get_val(step - , i - , j - ));
dp[step][i][j] = max(dp[step][i][j] , get_val(step - , i - , j));
dp[step][i][j] = max(dp[step][i][j] , get_val(step - , i , j));
dp[step][i][j] += a[i][step - i];
//这里将他们到达同一点时val就取一次那么最大值肯定不是去走同一点的。
}
//这里的转移至要注意第一个人一定在第二个人上面就行,也就是说i>=j是必须的转移时也要注意
}
}
}
printf("%d\n" , dp[ * n - ][n - ][n - ] + a[][] + a[n - ][n - ]);
return ;
}

hihocoder #1617 : 方格取数(dp)的更多相关文章

  1. HihoCoder - 1617 方格取数

    HihoCoder - 1617 (从群主那里借鉴来的, 群主好强啊) 题意:中文题不解释... 题解: dp[X][i][j] 代表的是X是坐标之和 第一个人 走到位置 dp[i][x-i] 第二个 ...

  2. hiho 1617 - 方格取数 - dp

    题目链接 描述 给定一个NxN的方格矩阵,每个格子中都有一个整数Aij.小Hi和小Ho各自选择一条从左上角格子到右下角格子的路径,要求路径中每一步只能向右或向下移动,并且两条路径不能相交(除了左上右下 ...

  3. NOIP2000方格取数[DP]

    题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 ...

  4. luogu 1004 方格取数 dp

    题目链接 题意 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示: A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 ...

  5. P1006 传纸条 (方格取数dp)

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个mm行nn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运 ...

  6. neu1458 方格取数 dp解法

    题意: 有N * N个格子,每一个格子里有正数或者0,从最左上角往最右下角走,仅仅能向下和向右,一共走两次(即从左上角走到右下角走两趟),把全部经过的格子的数加起来,求最大值SUM,且两次假设经过同一 ...

  7. HDU 1565&1569 方格取数系列(状压DP或者最大流)

    方格取数(2) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  8. HDU 1565 - 方格取数(1) - [状压DP][网络流 - 最大点权独立集和最小点权覆盖集]

    题目链接:https://cn.vjudge.net/problem/HDU-1565 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32 ...

  9. HDU 1565 方格取数(1) 轮廓线dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1565 方格取数(1) Time Limit: 10000/5000 MS (Java/Others) ...

随机推荐

  1. 浅析scrapy与scrapy_redis区别

    最近在工作中写了很多 scrapy_redis 分布式爬虫,但是回想 scrapy 与 scrapy_redis 两者区别的时候,竟然,思维只是局限在了应用方面,于是乎,搜索了很多相关文章介绍,这才搞 ...

  2. 重启iis的命令是什么?三种简单的重启方式

    第一种.界面操作 打开“控制面板”->“管理工具”->“服务”.找到“IIS Admin Service” 右键点击“重新启动” 弹出 “停止其它服务” 窗口,点击“是”. 第二种.Net ...

  3. 完全零基础在Linux中安装 JDK

    完全零基础在Linux中安装 JDK 总体思路:先确定没有Java程序了 — 然后创建相应路径文件夹 — 下载JDK — 解压到当前路径 — 自定义文件名称 — 配置环境变量 — 检查是否安装成功 第 ...

  4. 【0729 | Day 3】Python基础(一)

    Part 1 变量 一.什么是变量? 字面意思:变化的量. 而在计算机中,我们可以将它理解为世间万物变化的状态. 二.为什么要有变量? 首先,无论是我们还是计算机都需要变量来记录发生的状态的变化,其次 ...

  5. vue中的虚拟DOM树

    什么是虚拟DOM树?(Virtual DOM)   虚拟DOM树其实就是一个普通的js对象,它是用来描述一段HTML片段的    01    当页面渲染的时候Vue会创建一颗虚拟DOM树 02    ...

  6. 号外!号外!呼叫所有.NET桌面和移动开发人员!

    8月7日微软在官方博客发起了一次关于.NET桌面和移动开发的调查问卷,直到今天看博客才知道.这次调查的重点是关于.NET桌面开发技术的跨平台,于是我喜大普奔,奔走相告,希望有这方面需求的朋友们都能去参 ...

  7. 【POJ - 3255】Roadblocks(次短路 Dijkstra算法)

    Roadblocks 直接翻译了 Descriptions Bessie搬到了一个新的农场,有时候他会回去看他的老朋友.但是他不想很快的回去,他喜欢欣赏沿途的风景,所以他会选择次短路,因为她知道一定有 ...

  8. AOSP 预置 APP

    Android 系统预置 APP 是做 Framework 应用开发经常经常会遇到的工作,预置 APP 分为两种,一种是直接预置 APK,一种是预置带有源码的 APP. 预置 apk 示例说明 以 . ...

  9. 源码解读 Spring Boot Profiles

    前言 上文<一文掌握 Spring Boot Profiles> 是对 Spring Boot Profiles 的介绍和使用,因此本文将从源码角度探究 Spring Boot Profi ...

  10. 记一次mysql数据库失而复得过程

    背景: 由于是自己买的vps搭建的博客,用的是军哥的一键lnmp源码编译安装的,文章也就几篇,对备份并不太重视,想着等服务器快到期的时候备份一下不就行了. 后来在该服务器上测试lnmp分别编译编译安装 ...