题目链接

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

一句话题意:

https://cn.vjudge.net/problem/POJ-3186#author=Re0

分析

很显然这道题是不行滴,但是把这个数列看作从一个个区间倒着向外扩展取数而成的话,这样就保证了最优子结构和无后效性两个特点,于是就开始DP了

按照区间DP一贯的套路,先初始化元区间,也就是长度为1的区间值\(f[i][i]=a[i] * n\),为什么要倒着取呢?前面已经说明了,这样保证状态无后效性

我们枚举区间长度为阶段,然后考虑决策就很简单了,考虑是向左边扩展还是右边扩展

for(ri len=2;len<=n;len++){//区间长度
for(l=1;l<=n-len+1;l++){
r=l+len-1;
f[l][r]=max(f[l+1][r]+a[l]*(n-len+1),f[l][r-1]+a[r]*(n-len+1));
/*要么选左边的要么选右边的*/
}
}

代码

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <algorithm>
#include <queue>
#define ll long long
#define ri register int
using std::min;
using std::max;
template <class T>inline void read(T &x){
x=0;int ne=0;char c;
while(!isdigit(c=getchar()))ne=c=='-';
x=c-48;
while(isdigit(c=getchar()))x=(x<<3)+(x<<1)+c-48;
x=ne?-x:x;return ;
}
const int maxn=2005;
const int inf=0x7fffffff;
int f[maxn][maxn],n,a[maxn];
int main(){
int l,r,ans=-inf;
read(n);
for(ri i=1;i<=n;i++){
read(a[i]);
f[i][i]=a[i]*n;
}
for(ri len=2;len<=n;len++){//区间长度
for(l=1;l<=n-len+1;l++){
r=l+len-1;
f[l][r]=max(f[l+1][r]+a[l]*(n-len+1),f[l][r-1]+a[r]*(n-len+1));
/*要么选左边的要么选右边的*/
}
}
printf("%d\n",f[1][n]);
return 0;
}

最新文章

  1. mysql开启远程访问权限
  2. javaweb回顾第十二篇监听器
  3. SQL语句:SQLwhile(0=0)与while @@fetch_status=0.
  4. Truncated incorrect DOUBLE value错误
  5. (转)WebSphere MQ基础命令
  6. JAVA异常处理之finally中最好不要使用return
  7. 关于JQuery Class选择器的一点
  8. mysql用户链接数
  9. ORM 开发环境之利器:MVC 中间件 FreeSql.AdminLTE
  10. win7安装python3.6.1及scrapy
  11. RDMA RC UC UD
  12. MyBatis逆向工程:根据table生成Model、Mapper、Mapper.xml
  13. 20135220谈愈敏Blog3_构造一个简单的Linux系统MenuOS
  14. ip防刷脚本
  15. 使用java进行excel读取和写入
  16. noip2007-4
  17. servlet类第二篇
  18. 20172319 2018.04.11-16 《Java程序设计教程》 第6周学习总结
  19. pct_free
  20. CS20Chapter2

热门文章

  1. vmware安装Linux
  2. JMeter-正则表达式(取出银行卡号后4位)
  3. CentOS7下安装php-soap扩展
  4. MySQL连接错误:Can&#39;t connect to MySQL server on&#39;localhost&#39; (10055)
  5. 标签 &lt;i&gt;
  6. ubuntu 18.04安装ftp服务器
  7. .Netcore 2.0 Ocelot Api网关教程(7)- 限流
  8. Mac PyCharm2019激活方法
  9. [转帖]Linux cpufreq 机制了解
  10. linux报错Loading mirror speeds from cached hostfile解决方法