Codeforces Round #253 (Div. 1) C:http://codeforces.com/problemset/problem/442/C

题意:给你一个序列,然后你每次可以删除一个数,然后得到一个价值,这个价值是这个数左右相邻数的小的那一个。问你最多能取得多少价值。

题解:首先可以证明,如果两个大的数之间夹着一个小的数,那么这个小的数可以直接删除,这样贪心是正确的。最后得到的序列只可能是递增或者递减或者先递增后递减。对于前面两种,可以知道,从倒数第二大的数开始往小的数删除,这样贪心是正确的。对于,第三种来说,排完序后发现,也可以行倒数第二大的开始。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=*1e5+;
long long a[N],temp,ans;
int n,top;
int main(){
while(~scanf("%d",&n)){
ans=top=;
for(int i=;i<=n;i++){
scanf("%I64d",&temp);
while(top>&&a[top]<=temp&&a[top]<=a[top-]){
ans+=min(a[top-],temp);
top--;
}
a[++top]=temp;
}
sort(a+,a+top+);
for(int i=;i<=top-;i++)
ans+=a[i];
printf("%I64d\n",ans);
}
}

最新文章

  1. Twitter-Snowflake,64位自增ID算法详解
  2. Django初体验(一):自定义表单提交
  3. laravel增删改查
  4. Google被墙 Android开发工具下载地址
  5. [WinAPI] API 2 [MessageBox API][消息框API]
  6. JS之相等操作符
  7. android之merge布局
  8. TestNG超详细教程
  9. jq实现搜索引擎的提示效果
  10. Codevs 1371 浴火银河跑运输
  11. matlab实现高斯消去法、LU分解
  12. hadoop一键安装伪分布式
  13. Mysql+keepalived双主
  14. PHP之魔术方法
  15. react实现删除输入框内容
  16. 【题解】Luogu P2319 [HNOI2006]超级英雄
  17. 利用JavaScript jQuery实现图片无限循环轮播(不借助于轮播插件)-----转载
  18. IIS7.0 下使用Intelligencia.UrlRewriter时Session为空问题
  19. EF6+Sqlite连接字符串的动态设置
  20. leetcode557

热门文章

  1. android 27 ListView
  2. Qt 学习之路 2(79):QML 组件
  3. object C—类中函数的调用
  4. 【转载】ASP.NET支持多语言
  5. Oracle中wm_concat()的使用方法
  6. 零基础学习云计算及大数据DBA集群架构师【预科2015年12月14日周一】
  7. 19、XHTML
  8. producer怎样发送消息到指定的partitions
  9. 介绍一个小工具 Linqer
  10. NgNice项目案例