Codeforces Round #253 DIV1 C 馋
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-8const 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 馋相关推荐
- [Codeforces Round #254 div1] C.DZY Loves Colors 【线段树】
题目链接:CF Round #254 div1 C 题目分析 这道题目是要实现区间赋值的操作,同时还要根据区间中原先的值修改区间上的属性权值. 如果直接使用普通的线段树区间赋值的方法,当一个节点表示的 ...
- 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 ...
- Codeforces Round #352 div1 C D (智商+线段树)
Ultimate Weirdness of an Array 题意:给一个数列ai, f(i,j) 定义为除去i到j之间的数后最大gcd(ai, aj)的值, 求所有f(i,j)之和 #include ...
- codeforces round 309 div1 Nudist Beach 二分+搜索
题目描述:给出一个有n(1<=n<=1e5)个点m(1<=m<=1e5)条边的无向图,其中有k个点为堡垒,现在要求占领除堡垒外的一些点作为我方据点,未被占领的点视为敌方据点,使 ...
- Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...
- Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...
- codeforces round div2,3周赛补题计划(从开学到期末)
1. 本学期场次 从2020.09.19-2021.01.18,一共18周. 题号 场次 日期 备注 1475 Codeforces Round #697 (Div. 3) 1.25 1474 Cod ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
- Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)
Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...
- Codeforces Round #563 (Div. 2)/CF1174
Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...
最新文章
- rust熔炉怎么带走_Rust游戏中12个实用小技巧,包含无伤下坠、直梯爬楼
- Android多工程(project)开发实例
- JavaWeb: 报错信息The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path...
- DateDiff 函数的用法
- 电脑小常识:电脑键盘失灵怎么办?
- NFS挂载及写入故障
- 适用于高密度或高精度应用的高度可配置和可扩展的螺旋电容器设计
- 截图文字识别工具(OCR),图片上的文字也能轻松复制
- I/O多路复用select服务器
- 第15周-两个二阶二维矩阵相乘
- 104. 史上最全的数据库面试题,面试前刷一刷
- 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问
- pcntl_fork导致Mysql have gone away问题解决
- 2019春第一周编程总结
- 魔兽世界怀旧服十月最新服务器,10月12日魔兽世界经典旧世 怀旧服服务器的开放进展...
- 墨者学院 电子数据取证
- VSCode安装SonarLint代码质量管理工具
- thinkph6 怎么使用 workerman 快速上手
- elastic产品各个版本下载地址
- html input高度自适应,模拟input输入框高度自适应
热门文章
- echarts中国地图下钻到区
- 如何使用Navicat给表设置唯一索引
- centos7安装mysql5.7.16_centos7.x编译安装mysql5.7.16
- No package ‘mate-desktop-2.0‘ found
- 程序包androidx.support.annotation不存在/import android.support.annotation.NonNull;报错
- LINUX使用sed修改文件,如果包含变量,需要使用双引号
- Ribbon风格下,依然叫菜单或者菜单卡、菜单页
- 总感觉这个访问量过于均匀……
- 多个JVM之间,能否共用同样的类?
- CSDN统计出错:一天访问量竟然有48798