http://codeforces.com/contest/442/problem/C

题意非常easy,基本上肯定有坑坑洼洼的样子。看题目案例,从第三个跟第二个没有凹的案例来看的话,多写几个以及多画画过程略微推一下就会发现。除了最大的两个数以外都能够得到,然后就是凹的情况了,凹的情况肯定是唯一的,把中间的数除去得到一个值。可是凹凸有结合该怎么办。猜一把先把凹的单独一个个给攻克了,产生没有凹的序列再处理。然后刚好对于第一个案例进行測试,发现答案正确,于是就这么贪心的敲了一个

对于凹的情况 能够使用栈来处理,处理完对于没有凹的情况直接排序 除了最大的两个数以外其他 能够都取了

#include<iostream>
#include<cstdio>
#include<list>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<cmath>
#include<memory.h>
#include<set> #define ll long long #define eps 1e-8 const int inf = 0xfffffff; const ll INF = 1ll<<61; using namespace std; //vector<pair<int,int> > G;
//typedef pair<int,int > P;
//vector<pair<int,int> > ::iterator iter;
//
//map<ll,int >mp;
//map<ll,int >::iterator p;
int n;
int num[1000000 + 5]; stack<int > s; ll ans; void init() {
memset(num,0,sizeof(num));
while(!s.empty())s.pop();
ans = 0ll;
} bool input() {
while(scanf("%d",&n) == 1) {
for(int i=0;i<n;i++)
scanf("%d",&num[i]);
return false;
}
return true;
} void cal() {
bool flag = false;
s.push(num[0]);
for(int i=1;i<n;i++) {
if(num[i] <= s.top()) {s.push(num[i]);flag = true;continue;}
if(num[i] >= s.top() && flag) {
s.pop();
ans += min(num[i],s.top());
if(num[i] <= s.top())flag = true;
else {
while(true) {
int tmp = s.top();
s.pop();
if(s.empty()) {
s.push(tmp);
break;
}
if(tmp > s.top() || num[i] < tmp) {
s.push(tmp);
break;
}
if(num[i] >= tmp)ans += min(s.top(),num[i]);
}
}
if(num[i] <= s.top())flag = true;
else flag = false;
s.push(num[i]);
continue;
}
s.push(num[i]);
}
memset(num,0,sizeof(num));
int cnt = 0;
while(!s.empty()) {
num[cnt++] = s.top();
s.pop();
}
sort(num,num+cnt);
for(int i=0;i<cnt-2;i++)
ans += num[i];
} void output() {
printf("%I64d\n",ans);
} int main() {
while(true) {
init();
if(input())return 0;
cal();
output();
}
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

Codeforces Round #253 DIV1 C 馋的更多相关文章

  1. Codeforces Round #253 (Div. 1) (A, B, C)

    Codeforces Round #253 (Div. 1) 题目链接 A:给定一些牌,然后如今要提示一些牌的信息,要求提示最少,使得全部牌能够被分辨出来. 思路:一共2^10种情况,直接暴力枚举,然 ...

  2. Codeforces Round #543 Div1题解(并不全)

    Codeforces Round #543 Div1题解 Codeforces A. Diana and Liana 给定一个长度为\(m\)的序列,你可以从中删去不超过\(m-n*k\)个元素,剩下 ...

  3. Codeforces Round #545 Div1 题解

    Codeforces Round #545 Div1 题解 来写题解啦QwQ 本来想上红的,结果没做出D.... A. Skyscrapers CF1137A 题意 给定一个\(n*m\)的网格,每个 ...

  4. Codeforces Round #539 Div1 题解

    Codeforces Round #539 Div1 题解 听说这场很适合上分QwQ 然而太晚了QaQ A. Sasha and a Bit of Relax 翻译 有一个长度为\(n\)的数组,问有 ...

  5. Codeforces Round 253 (Div. 2)

    layout: post title: Codeforces Round 253 (Div. 2) author: "luowentaoaa" catalog: true tags ...

  6. [Codeforces Round #254 div1] C.DZY Loves Colors 【线段树】

    题目链接:CF Round #254 div1 C 题目分析 这道题目是要实现区间赋值的操作,同时还要根据区间中原先的值修改区间上的属性权值. 如果直接使用普通的线段树区间赋值的方法,当一个节点表示的 ...

  7. Codeforces Round #253 (Div. 2) D. Andrey and Problem

    关于证明可以参考题解http://codeforces.com/blog/entry/12739 就是将概率从大到小排序然后,然后从大到小计算概率 #include <iostream> ...

  8. Codeforces Round #253 (Div. 2) D题

    题目大意是选出一个其他不选,问问最大概率: 刚开始想到DP:F[I][J][0]:表示从 前I个中选出J个的最大值, 然后对于F[I][J][1]=MAX(F[I-1][J][1],F[I-1][J- ...

  9. Codeforces Round #253 (Div. 1) A. Borya and Hanabi 暴力

    A. Borya and Hanabi Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/442/p ...

随机推荐

  1. HDU 1030 Delta-wave 数学题解

    给出一个数字塔,然后求沿着数字之间的边走,给出两个数字,问其路径最短的长度是多少. 看似一条搜索题目,只是有一定做题经验的人都知道,这个不是搜索题,直接搜索肯定超时. 这个是依据规律计算的数学题目. ...

  2. dataStage 7.5.1A

    ------------------------------    DataStage Server License ------------------------------ Serial Num ...

  3. 通过程序预览Office文档

    我承认,标题是夸大了,就是为了吸引注意力.这里只有Word文档和Excel文档的预览代码. Word://此部分来源:http://princed.mblogger.cn/posts/11885.as ...

  4. delpi中的RTTI初试

    java中的反射机制使我们能够在运行期间获取运行期类的信息,那么在delphi中有没有这样的功能呢?答案是有,实现这种功能的机制在delphi中叫做RTTI,废话少说,先来一段demo: 1.先定义一 ...

  5. 一些窗口API函数,比如SetForegroundWindow,SwitchToThisWindow

    SetForegroundWindowSwitchToThisWindow procedure TApplication.BringToFront;varTopWindow: HWnd;beginif ...

  6. 综述-如何克服HTML5的“性工能”障碍

    http://ask.dcloud.net.cn/docs HTML5自出现以来,几经风雨,虽看似很有前途,但实际使用问题太多,DCloud为此踩了无数坑.但我们从未放弃,我们加入了W3C,发起了 H ...

  7. Linux开发环境的搭建和使用——Linux 常用的命令使用

    概要 视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完毕了窃取资料的任务. Linux 刚出世时没有什么图形界面.全部的操作全靠命令完毕.就如同电视里的黑客 ...

  8. Swift - 动画效果的实现方法总结(附样例)

    在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimations.这三个方法都是类方法. 一,使用 ...

  9. 深入分析redis cluster 集群

    深入分析redis cluster 集群安装配置详解 下面小编来为各位介绍一篇深入分析redis cluster 集群安装配置详解,如果你希望做数据库集群就可以来看看此文章的哦. http://rub ...

  10. IE网页js语法错误2行字符1,FF中正常

    今天开发过程中,突然遇到此奇葩问题,我之前以为是我js打开模态窗体传递的url参数有问题,我使用open没问题.使用模态窗体则会先弹出此错误然后再显示新打开的界面.网上查了许久,总结解决方案如下: 1 ...