双线DP

#include<iostream>
#include<algorithm>
#include<ctype.h>
#include<string>
#include<string.h>
#include<vector>
#include<queue>
using namespace std;
int dp[][][]; //压缩空间 dp[x1+y1][x1][x2];
//已知x1+y1 、x1和x2的值 ,结合x1 + y1 = x2 + y2 可以确定x1,y1,x2,y2四个值 int mp[][];
int max(int a,int b,int c,int d)
{
if(a>=b && a>=c && a>=d) return a;
else if(b>=a && b>=c && b>=d) return b;
else if(c>=a && c>=b && c>=d) return c;
else if(d>=a && d>=c && d>=b) return d;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int m,n;
cin>>m>>n;
for(int i=;i<=m;i++)
{
for(int j=;j<=n;j++)
{
cin>>mp[i][j];
}
}
int k,x1,y1,x2,y2;
for(k=;k<=m+n;k++)
for(x1=;x1<=m;x1++)
for(x2=;x2<=m;x2++)
dp[k][x1][x2] = ;
for(k=;k<=m+n;k++)
{
for(x1=;x1<=m;x1++) //(x,y)看作 其中一个坐标,结合k可求出对应的另一个点 ,遍历k和所有的(x,y) 就可以得到dp[k][x][y]的所有值
{
for(x2=;x2<=m;x2++)
{
y1 = k - x1;
y2 = k - x2; if( y1<=n && y2<=n && y1>= && y2>=) //不越界
{
if(x1 != x2 && y1 != y2) //不相交
{
int v1 = dp[k-][x1-][x2-] + mp[x1][y1] + mp[x2][y2];
int v2 = dp[k-][x1][x2] + mp[x1][y1] + mp[x2][y2];
int v3 = dp[k-][x1-][x2] + mp[x1][y1] + mp[x2][y2];
int v4 = dp[k-][x1][x2-] + mp[x1][y1] + mp[x2][y2];
dp[k][x1][x2] = max(v1,v2,v3,v4);
}
}
}
}
} cout<<dp[m+n-][m][m-]<<endl; } return ;
}

NYOJ 61 传纸条(一)的更多相关文章

  1. nyoj 61 传纸条

    点击打开链接 传纸条(一) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做 ...

  2. nyoj 61——传纸条(一)——————【双线dp】

    传纸条(一) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...

  3. NYOJ 61传纸条(一) 双线程DP问题

    http://www.cnblogs.com/HpuAcmer/archive/2012/05/06/2486591.html 题目链接:http://acm.nyist.net/JudgeOnlin ...

  4. nyoj 题目61 传纸条

    传纸条(一) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...

  5. nyist 61 传纸条 nyist 712 探 寻 宝 藏(双线程dp问题)

    http://acm.nyist.net/JudgeOnline/problem.php?pid=61 http://acm.nyist.net/JudgeOnline/problem.php?pid ...

  6. 南阳OJ 61 传纸条(一)

    传纸条(一) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...

  7. tyvj1011 传纸条

    背景 NOIP2008复赛提高组第三题 描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端, ...

  8. NOIP2008 传纸条

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

  9. NOIP2008传纸条[DP]

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

随机推荐

  1. Power BI 报表服务器发布

    Power BI 报表服务器让你的用户能够访问数据.获取见解,并能够使用 SQL 报表服务器服务的企业报告功能 - 这一切都在现代本地解决方案中完成.让用户能够直观浏览数据并快速发现模式,以便更快作出 ...

  2. perl 遍历指定目录下的所有文件,替换指定文本内容,返回受影响的文件路径

    不会读取 影藏文件 main #!/usr/bin/perl use autodie; use utf8; use Encode qw(decode encode); if(@ARGV ne 3){ ...

  3. Spark RDD Transformation 简单用例(一)

    map(func) /** * Return a new RDD by applying a function to all elements of this RDD. */ def map[U: C ...

  4. pycharm更新之后显示问题

    pycharm更新之后显示问题 在新版pycharm中等号和其他符号会连在一块,下面是解决方法 添加公众号:

  5. CodeForces - 754D

    All our characters have hobbies. The same is true for Fedor. He enjoys shopping in the neighboring s ...

  6. day2 二、编程语言、python解释器和变量

    一.编程语言分类 1.机器语言 直接用计算机能理解的二进制指令编写程序,直接控制硬件,需要了解硬件的操作细节. 2.汇编语言 用英文标签取代二进制编写程序,也是直接控制硬件,也需要了解硬件的操作细节. ...

  7. db2 v9.7 新特性cur_commit 能够实现未提交读新特性cur_commit 能够实现未提交读

    db2 get db cfg|find "CUR_COMMIT" 当前已落实                                   (CUR_COMMIT) = ON ...

  8. MyEclipse中的几种查找方法

    在编程中常常需要用到查找功能,这里根据日常的使用总结一下常用的集中查找方法 Ctrl+H:在MyEclipse中打开Search弹出框,或者在菜单中打开Search弹出框, 定位到 File Sear ...

  9. vm tools安装linux ubuntu和主机不能复制

    点击图中的安装vm tools ,因为我的已经安装过了,所以显示的是重新安装. 点击以后会出来一个虚拟光驱,打开虚拟光驱,复制出来 vm toolsxxx.tar.gz  文件建立一个临时文件夹,复制 ...

  10. flume 学习总结

    flume 总结 flume 总结 下载配置安装 1 下载 2 配置安装 flume 架构 agent 配置 1 source 配置 11 监听网络端口 12 监控文件 2 channel 配置 3 ...