跟某NOIP的《矩阵取数游戏》很像。

f(i,j)表示从左边取i个,从右边取j个的答案。

f[x][y]=max(dp(x-1,y)+a[x]*(x+y),dp(x,y-1)+a[n-y+1]*(x+y))。

ans=max{f(i,n-i)}。

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define N 2001
int n,a[N],f[N][N],ans;
int dp(int x,int y)
{
if(f[x][y]!=-1) return f[x][y];
if((!x)&&(!y)) return f[x][y]=0;
if(!x) return f[x][y]=dp(x,y-1)+a[n-y+1]*(x+y);
if(!y) return f[x][y]=dp(x-1,y)+a[x]*(x+y);
return f[x][y]=max(dp(x-1,y)+a[x]*(x+y),dp(x,y-1)+a[n-y+1]*(x+y));
}
int main()
{
memset(f,-1,sizeof(f));
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d",&a[i]);
for(int i=0;i<=n;++i)
ans=max(ans,dp(i,n-i));
printf("%d\n",ans);
return 0;
}

最新文章

  1. Git 取消跟踪已版本控制的文件
  2. ilspy导致c# dll代码被窃取
  3. paper 104: 彩色图像高速模糊的懒惰算法
  4. Java 中System里getProperty(something)
  5. 10-Java 网络通信
  6. switch为什么不能用string类型?
  7. xml学习总结(二)
  8. bzoj 3123 [Sdoi2013]森林(主席树,lca,启发式合并)
  9. Entity Framework Code First 映射继承关系
  10. Linux中后台执行任务
  11. C++函数调用的反汇编过程及Thunk应用
  12. python之路第五篇之递归(进阶篇:续:经典例子剖析)
  13. 解决mac 中的myeclipse控制台中文乱码问题
  14. Revit二次钢筋
  15. 基于timestamp和nonce的防重放攻击
  16. js运用6
  17. 查看CPU信息
  18. Vue2.5开发去哪儿网App 第五章笔记 下
  19. Openstack入门篇(十八)之Cinder服务--&gt;使用NFS作为后端存储
  20. curl获取远程文件内容

热门文章

  1. NFC学习 (1)
  2. java规范(二)
  3. C#Matlab混合编程类 初始化问题解决方法
  4. CentOS 7 安装 MySQL
  5. wpf 遮住输入法 问题
  6. obeject-c 与 swift 混编
  7. http之100-continue(转)
  8. Java中Timer的用法
  9. tomcat 配置ssi
  10. 2016. last day in office