题意:类似传纸条

方法:

把他要求的操作(一个人来回),转化为两个人同时走,除了开始和结束位置只能走不同路,得到的分数和的最大值即可。

一开始想到要定义的状态,是两个人的x(行)和y(列)坐标。这样时间和空间都为$O(n^4)$,都超出了,因此需要优化。注意到每个人从起点到终点的总步数一定是相同的,而且可以根据每个人走的步数和x坐标,推出这个人的y坐标。那么可以只记录步数和两个人的x坐标作为状态。这样就可以把时间/空间优化到$O(n^3)$。(空间还可以通过滚动数组再优化,但是不优化已经够用)

错误次数:2

原因:

1. 27行错误地写作ans[0][1][1]=1

2. ans第一维错误地与二、三维开了同样的大小(110),实际需要2倍的二、三维

3. 用了C++11的min({..,..})导致CE

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int T,TT,m,n,maxans;
int ans[][][];
int a[][];
int max(int a,int b,int c,int d)
{
int ans=a;
if(b>ans) ans=b;
if(c>ans) ans=c;
if(d>ans) ans=d;
return ans;
}
int main()
{
int i,j,j1,j2;
scanf("%d",&T);
for(TT=;TT<=T;TT++)
{
scanf("%d%d",&m,&n);
for(i=;i<=m;i++)
for(j=;j<=n;j++)
scanf("%d",&a[i][j]);
memset(ans,,sizeof(ans));
ans[][][]=a[][];//起点要特殊处理,两个人在同一位置
maxans=;
for(i=;i<=m+n-;i++)
for(j1=max(,i-n+);j1<=min(i+,m);j1++)//max和min是依据推导出的数据范围
for(j2=max(,i-n+);j2<=min(i+,m);j2++)
if(j1!=j2)//保证两个人不在同一行,也就是不在同一位置
ans[i][j1][j2]=max(ans[i-][j1][j2],ans[i-][j1-][j2],ans[i-][j1][j2-],ans[i-][j1-][j2-])+a[j1][i-j1+]+a[j2][i-j2+];
i=m+n-;//对于终点也要特殊处理,由于终点两个人可以到同一位置
for(j1=max(,i-n+);j1<=min(i+,m);j1++)
for(j2=max(,i-n+);j2<=min(i+,m);j2++)
ans[i][j1][j2]=max(ans[i-][j1][j2],ans[i-][j1-][j2],ans[i-][j1][j2-],ans[i-][j1-][j2-])+a[j1][i-j1+]+a[j2][i-j2+];
for(j1=;j1<=m;j1++)
for(j2=;j2<=m;j2++)
maxans=max(maxans,ans[m+n-][j1][j2]);
printf("Case %d: %d\n",TT,maxans-a[m][n]);
}
return ;
}

最新文章

  1. ionic 图标以及启动页图片不能正确加载
  2. NYOJ题目10505C?5S?
  3. ASP.NET中使用代码来进行备份和还原数据库
  4. 如何拿到国内IT巨头的Offer
  5. DOCTYPE、指定语言、字符集
  6. 设置searchBar上右边取消按钮的颜色
  7. linux svn迁移备份的三种方法
  8. iOS 判断设备是否越狱
  9. laravel5.3初体验
  10. HTML中的target标记
  11. R语言 一套内容 从入门 到放弃
  12. RISC-V踩坑记----__builtin_clz((x)库函数的应用
  13. sourcetree合并分支
  14. 从HTML Components的衰落看Web Components的危机 HTML Components的一些特性 JavaScript什么叫端到端组件 自己对Polymer的意见
  15. FFmpeg简易播放器的实现-最简版
  16. python 算法面试题
  17. Go语言中Socket通信之Tcp客户端
  18. [Illuminate\Database\QueryException] SQLSTATE[HY000] [1045] Access denied for user &#39;root&#39;@&#39;localhost&#39; (using pas sword: NO) (SQL: select * from information_schema.tables where table_schema = la
  19. java 获取本机的IP地址
  20. Hibernate 一次查询分多次返回 避免内存溢出

热门文章

  1. Unity自己主动打包工具
  2. bash exec
  3. HDU 6109 数据分割 【并查集+set】 (2017&quot;百度之星&quot;程序设计大赛 - 初赛(A))
  4. Vue中 key keep-alive
  5. BZOJ_1406_[AHOI2007]密码箱_枚举+数学
  6. 枚举子集 Codeforces306 Div2 B
  7. Dijkstra堆优化
  8. Watir: 如果安装sougou浏览器,有可能导致Watir不能工作
  9. bzoj 2836 魔法树 —— 树链剖分
  10. 洛谷P4316绿豆蛙的归宿——期望