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