链接

https://www.luogu.org/problemnew/show/P1006


日常牢骚

过年前最后一节课上完了坐标DP 也接触了一点区间DP(noi1995石子合并)下次做做看看吧

老师布置了好多道DP这让我这个刚刚学的蒟蒻可咋办呀



想die的心


正题

不扯淡了赶紧扯回来

首先看到这题我想到了另外一题很相似的叫啥我忘了......

反正也是双向DP(姑且这么叫吧)

看到题解里有dalao们弄成三维的 二维的 甚至是一维的

我只想说



对大佬%%%%%%%%

本蒟蒻的做法十分质朴淡雅清新脱俗

因为题目的数据挺小只有50

所以自然而然用到了四维......


思路

  1. 既然是从头尾各走一遍且不重复 那么我们可以看成从头走两遍不重复的求最大的好感度
  2. 于是我们设(x1,y1)为第一次的坐标 (x2,y2)为第二次的坐标 得出f[x1][y1][x2][y2]为好感度总和
  3. 那么只有四种方法可以到每一个格子 (一上,二上)(一上,二左)(一左,二上)(一左,二左)
  4. 最后从后面遍历到头就出答案 答案在f[2][1][1][2]中(因为不重复所以只可能一个在下面一个在左边)

代码

#include<iostream>
using namespace std;
int f[51][51][51][51],a[51][51];
int n,m;
int main()
{
cin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
for(int x1=m;x1>=1;x1--)//从后面开始遍历回去
for(int y1=n;y1>=1;y1--)
for(int x2=m;x2>=1;x2--)
for(int y2=n;y2>=1;y2--)
{
if((x1>1&&x2>1)&&((x1-1!=x2-1)||(y1!=y2)))
f[x1-1][y1][x2-1][y2]=max(f[x1][y1][x2][y2]+a[x1-1][y1]+a[x2-1][y2],f[x1-1][y1][x2-1][y2]);
if((x1>1&&y2>1)&&((x1-1!=x2)||(y1!=y2-1)))
f[x1-1][y1][x2][y2-1]=max(f[x1][y1][x2][y2]+a[x1-1][y1]+a[x2][y2-1],f[x1-1][y1][x2][y2-1]);
if((y1>1&&x2>1)&&((x1!=x2-1)||(y1-1!=y2)))
f[x1][y1-1][x2-1][y2]=max(f[x1][y1][x2][y2]+a[x1][y1-1]+a[x2-1][y2],f[x1][y1-1][x2-1][y2]);
if((y1>1&&y2>1)&&((x1!=x2)||(y1-1!=y2-1)))
f[x1][y1-1][x2][y2-1]=max(f[x1][y1][x2][y2]+a[x1][y1-1]+a[x2][y2-1],f[x1][y1-1][x2][y2-1]);
}
cout<<f[2][1][1][2];//答案
}

最新文章

  1. iOS开发之第三方库的学习--hpple的使用
  2. UDT中的epoll
  3. window.navigate 与 window.location.href 的使用区别介绍
  4. [Socket网络编程]一个封锁操作被对 WSACancelBlockingCall 的调用中断。
  5. 使用树莓派和kali Linux打造便携式渗透套件
  6. 练手CF3-C - Wormhouse
  7. AngularJS(16)-路由
  8. SharePoint 2010 WSP包部署过程中究竟发生什么?
  9. NUnit - 使用感受
  10. Effective java -- 2 对于所有对象都通用到方法
  11. (转载)Java:按值传递与按引用传递
  12. python中的2、8、16、10进制之间的转换
  13. C# WebRequest.Create 锚点“#”字符问题
  14. MySQL数据库(9)----从命令行获取元数据
  15. C++14系列(2):C/C++的时间函数
  16. 【转载】Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍
  17. 阿里云ubuntu 创建svn服务器
  18. windows 系统禁止使用 U 盘的方法
  19. PHP+IIS上传大文件
  20. Odoo8模块中增加延时自动消失的提示

热门文章

  1. UI特效资料-----ShaderWeaver
  2. Linux VFS机制简析(二)
  3. RegExp正则表达式内容
  4. [转] 微信小程序 页面跳转 传递参数
  5. 6、Angular Route 路由
  6. Csharp: Send Email
  7. caffe-windows中classification.cpp的源码阅读
  8. PHP Primary script unknown 终极解决方法
  9. 关于datagridview中checkbox列在选中行的情况下无法操作值
  10. elasticsearch5.5.2环境搭建