link

试题分析

容易发现性质,选择的是一段区间,但是贪心无法去维护这件事情,所以考虑$dp$,且我们只要去设计关于$JOI$的选择。

设$dp(i,j)$为现在要在$[l,r]$区间内选择,然后就可以随便写了。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define int long long
using namespace std;
inline int read(){
int f=,ans=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
const int N=;
int dp[N][N],n,val[N],maxn;
int dfs(int l,int r){
if(l==r) return dp[l][r]=val[l];
if(l+==r) return dp[l][r]=max(val[l],val[r]);
if(dp[l][r]!=-) return dp[l][r];
int res=;
if(val[l+]>val[r]) res=max(res,dfs(l+,r)+val[l]);
else res=max(res,dfs(l+,r-)+val[l]);
if(val[l]<val[r-]) res=max(res,dfs(l,r-)+val[r]);
else res=max(res,dfs(l+,r-)+val[r]);
return dp[l][r]=res;
}
signed main(){
memset(dp,-,sizeof(dp));
n=read();
for(int i=;i<=n;i++) val[i]=val[i+n]=read();
for(int i=;i<=n+;i++){
maxn=max(maxn,dfs(i,i+n-));
}
printf("%lld\n",maxn);
}

最新文章

  1. python使用总结
  2. Post提交
  3. Smart210学习记录-------linux内核模块
  4. Cipher Message
  5. Javascript中函数调用和this的关系
  6. bzoj2679:[Usaco2012 Open]Balanced Cow Subsets
  7. HDU 4606 Occupy Cities (计算几何+最短路+最小路径覆盖)
  8. 用纯jsp实现用户的登录、注册与退出
  9. mysql 之SQL语句--NSERT SELECT ON DUPLICATE KEY UPDATE的写法
  10. docker中镜像的提交和上传
  11. Linux基本命令总结(一)
  12. 扒一扒JVM的垃圾回收机制,下次面试你准备好了吗
  13. unity 动画无法正常播放Animation的动画问题
  14. UVA 10534 Wavio Sequence
  15. Feign自定义编程配置
  16. Linux命令(九)查找文件find
  17. WPF备忘录(3)如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter
  18. lua中实现倒计时
  19. tiny6410移植opencv
  20. PopupWindow学习笔记

热门文章

  1. Appium+python HTML测试报告(1)(转)
  2. Unity Lighting - Choosing a Color Space 选择色彩空间(四)
  3. 8个数据清洗Python代码,复制可用,最长11行 | 资源
  4. dotnet服务器端框架从精通到弃坑
  5. ViewPort &lt;meta&gt;标记
  6. js 零零散散的总结。
  7. Yogurt factory
  8. Beta周第8次Scrum会议(11/17)【王者荣耀交流协会】
  9. YQCB冲刺周第二天
  10. Alpha 冲刺(4/10)