题目链接

戳我

\(Solution\)

观察发现如果一个数两边都比他大,删掉他可以保证最优,这个应该是显然的。这个东西用单调栈维护一下,最后剩下的就是个单调递减或单调递增的数列,从小到大排个序取前面\(n-2\)个,\(n\)为数列长度

\(Code\)

#include<bits/stdc++.h>
#define int long long
#define rg register
#define file(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout);
using namespace std;
int read(){
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();
return f*x;
}
const int N=5e5+10;
stack<int> s;
int a[N];
main(){
int n=read(),ans=0,x,y,tot=0;
for(int i=1;i<=n;i++){
a[i]=read();
while(s.size()>=2){
x=s.top(),s.pop(),y=s.top();
if(y>=x&&x<=a[i]) ans+=min(a[i],y);
else {s.push(x);break;}
}
s.push(a[i]);
}
while(!s.empty())
a[++tot]=s.top(),s.pop();
sort(a+1,a+1+tot);
for(int i=1;i<tot-1;i++)
ans+=a[i];
printf("%lld",ans);
return 0;
}

最新文章

  1. .NET跨平台之旅:将示例站点升级至 ASP.NET Core 1.1
  2. 辛巴学院-Unity-剑英陪你零基础学c#系列(二)顺序
  3. Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)
  4. vi 技巧和诀窍~转IBM
  5. Xcode cannot launch because the device is locked.
  6. Codeforces Round #199 (Div. 2) A Xenia and Divisors
  7. mysql 语句其它及优化
  8. fancybox 无效 失效 直接打开页面, ajax 之后 fancybox对更新的数据无效,Jquery失效 无效
  9. js上传图片
  10. 邓_php面试【002】——完整版
  11. 关于ZK框架的onScroll事件的问题
  12. [bzoj4881][Lydsy2017年5月月赛]线段游戏
  13. css 修改默认滚动条样式
  14. laravel 使用构造器进行增删改查
  15. Win10访问不到XP共享的解决:
  16. linux 的常用命令---------第七阶段
  17. 【struts2】Struts2的运行流程
  18. Java 8 – Convert Instant to ZonedDateTime
  19. SQL Server 禁止和启用约束
  20. ARM开发---Keil注册+JLink维修详解

热门文章

  1. ES6基础之——get 与 set
  2. qq快捷打开聊天窗口的代码
  3. \ n是将输出换行符的javascript的转义符。
  4. ASP.NET数据库连接类(SqlDBHelper)
  5. 1 sql server中添加链接服务器
  6. ChinaCock扫描控件介绍-使用TCCBarcodeScanner引起app闪退
  7. 前端入门Js笔记
  8. opencv,用摄像头识别贴片元件的定位和元件的角度(转载)
  9. 第11章 Spring Boot使用Actuator
  10. ios h5 长按放大镜效果关闭