/*
http://acm.nyist.net/JudgeOnline/problem.php?pid=61 传纸条
http://acm.nyist.net/JudgeOnline/problem.php?pid=712 探 寻 宝 藏
题意:给一个矩阵,求两条不相交的线从左上角到右下角经过的元素的最大和
双线dp - 即同时考虑两条不相交的线,使其线上的和最大
显然我们需要记录每一步时两个线同时往前走的位置(这样可以容易的控制其不相交).
状态:dp[k,(x1,y1),(x2,y2)] 在第k步,双线里一线在(x1,y1) 二线在(x2,y2) 的最大和
转移:dp[k,(x1,y1),(x2,y2)] = max(dp[k-1,(x1-1,y1),(x2-1,y2)],
dp[k-1,(x1,y1-1),(x2-1,y2)],
dp[k-1,(x1-1,y1),(x2,y2-1)],
dp[k-1,(x1,y1-1),(x2,y2-1)]) + map[x1][y1] + map[x2][y2];
*/
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
template <typename _T>
inline _T Max(_T a , _T b){ return (a<b)?(b):(a); }
template <typename _T>
inline _T Max(_T a , _T b , _T c , _T d){
return (Max(a,b) < Max(c,d)) ? (
NYOJ 61 传纸条 && NYOJ 712 探寻宝藏 -- 双线dp
最新推荐文章于 2017-07-13 17:18:48 发布