CodeForces 319B 栈
//题意:给你长度为n的序列ss 只要ss[i]>ss[i+1] ss[i]就可以吃掉ss[i+1]
//hint里的样例很明白了 [10 9 7 8 6 5 3 4 2 1] → [10 8 4] → [10].
//方法就是利用栈模拟o(n)的效率求出每个元素第几次被吃掉,然后取最大值即可
// main.c
// example
//
// Created by Adam on 15/2/2.
// Copyright (c) 2015年 Adam. All rights reserved.
//
#include <iostream>
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "algorithm"
#include <queue>
#include <stack>
#define N 1800000
#define LL long long int
using namespace std;
struct node {
int data;
int step;
};
int main()
{
int n;
int ss[100005];
stack <struct node> que2;
while(scanf("%d",&n)!=EOF)
{
while( !que2.empty() ) que2.pop(); //清空栈
for( int i=0; i<n; i++)
scanf("%d", &ss[i]);
int i=0;
while( i<(n-1) && ss[i]<=ss[i+1] ) i++;//找到第一个入栈的元素 就是第一个可以吃别人的元素
node tmp;
tmp.data = ss[i++]; tmp.step = 0;
que2.push(tmp);//将其入栈
int ans=0,sm;
for( ;i<n; i++ )
{
node p=que2.top();
if(ss[i]<p.data) //如果当前的元素小于栈顶元素
tmp.data = ss[i] , tmp.step = 1;
else{//否则找到下一个吃它的人的下一个位置
sm = 0;
while( !que2.empty() )
{
tmp = que2.top();
if( tmp.data < ss[i] ) {
sm = max(sm,tmp.step); //找到step的最大值
que2.pop();
}
else break;
}
tmp.data = ss[i];
if( que2.empty() ) tmp.step=0; //如果找不到 step置为0
else tmp.step = sm+1;//如果找到了 step为中间被吃的各个元素的step的最大值
}
que2.push( tmp );//入栈
ans=max( ans,tmp.step ); //取最大step
}
printf("%d\n",ans);
}
return 0;
}
CodeForces 319B 栈相关推荐
- Educational Codeforces Round 4 C. Replace To Make Regular Bracket Sequence 栈
C. Replace To Make Regular Bracket Sequence 题目连接: http://www.codeforces.com/contest/612/problem/C De ...
- Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor 栈 链表
E. Correct Bracket Sequence Editor 题目连接: http://www.codeforces.com/contest/670/problem/E Description ...
- Codeforces 516D Drazil and Morning Exercise (栈、二分)
题目链接 https://codeforces.com/contest/516/problem/D 题解 我还是数据结构水平太低了啊--连一个点子树内距离不超过\(l\)的点数都不会求 首先有一个熟知 ...
- Codeforces 777E:Hanoi Factory(贪心+栈)
http://codeforces.com/problemset/problem/777/E 题意:给出n个环状圆柱,每个圆环有一个内半径a,外半径b,和高度h,只有外半径bj <= bi并且b ...
- CodeForces - 1484E Skyline Photo(dp+单调栈)
题目链接:点击查看 题目大意:给出 nnn 个建筑,每个建筑有一个高度和一个美丽值,现在要求划分为数个连续的区间,使得所有区间的贡献之和最大,其中每个区间的贡献值为,区间中高度最低的建筑物的美丽值 题 ...
- CodeForces - 1506G Maximize the Remaining String(单调栈+贪心)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的字符串,假设共出现了 kkk 种字母,现在要求出一个长度为 kkk 的子序列,满足每种字母只出现一次,且字典序最大 题目分析:和之前牛客上的一道 ...
- Codeforces Round #709 (Div. 1) C. Skyline Photo dp + 单调栈优化
传送门 文章目录 题意: 思路: 题意: 思路: 首先一个非常明显的dpdpdp式子就是f[i]=max(f[j]+val(j+1,i))f[i]=max(f[j]+val(j+1,i))f[i]=m ...
- Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 括号序列 dp+栈
点击打开链接 题意: 给你一个括号序列,让你找到最长的连续的合法括号序列 然后让你输出这个括号序列的长度是多少 这么长的括号序列一共有多少个 思路: 看到括号匹配,就用stack来弄就好了 然后我们d ...
- Codeforces Round #401 (Div. 2) E. Hanoi Factory 栈
E. Hanoi Factory 链接: http://codeforces.com/contest/777/problem/E 题解: 排序b从小到大,在b相同排序a从小到大,使其满足如果i-1不能 ...
最新文章
- pandas.DataFrame删除/选取含有特定数值的行或列实例
- FZ25/FZ35 恒流电子负载
- N个数的全排列 -------指定排头法
- 51nod 1536不一样的猜数游戏 思路:O(n)素数筛选法。同Codeforces 576A Vasya and Petya‘s Game。
- 微信 for Mac 3.1.0 测试版发布(附安装包),新增「发朋友圈」功能
- 映射到另一台计算机,远程服务器硬盘映射到本地电脑
- STL之set_union、set_intersection、set_difference、set_symmetric_difference
- python截图直接在内存里调用_Python-按块上传FTP中的内存文件(由API调用生...
- 逛知乎才知网站建设不只有wordpress建站系统,小白值得收藏
- 保存画面为图片 当前MFC保存该程序为图片 c++ vc
- 计算机sci二区期刊,图像处理的sci二区期刊有哪些
- ROVIO安装运行及保存轨迹用evo评估
- 【javascript】详解javaScript的深拷贝
- 裁员的第一波枪声,从游戏行业响起了?
- 国家计算机病毒中心发现篡改IE的恶意木马
- eBay自养号测评需要准备哪些资料?
- Homework02
- 微型计算机温度控制系统,单片机实现PC机温度控制系统方案
- vertical-align属性的运用及注意事项
- 2 评价类算法:TOPSIS法笔记(附Python代码)