//题意:给你长度为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 栈相关推荐

  1. 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 ...

  2. Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor 栈 链表

    E. Correct Bracket Sequence Editor 题目连接: http://www.codeforces.com/contest/670/problem/E Description ...

  3. Codeforces 516D Drazil and Morning Exercise (栈、二分)

    题目链接 https://codeforces.com/contest/516/problem/D 题解 我还是数据结构水平太低了啊--连一个点子树内距离不超过\(l\)的点数都不会求 首先有一个熟知 ...

  4. Codeforces 777E:Hanoi Factory(贪心+栈)

    http://codeforces.com/problemset/problem/777/E 题意:给出n个环状圆柱,每个圆环有一个内半径a,外半径b,和高度h,只有外半径bj <= bi并且b ...

  5. CodeForces - 1484E Skyline Photo(dp+单调栈)

    题目链接:点击查看 题目大意:给出 nnn 个建筑,每个建筑有一个高度和一个美丽值,现在要求划分为数个连续的区间,使得所有区间的贡献之和最大,其中每个区间的贡献值为,区间中高度最低的建筑物的美丽值 题 ...

  6. CodeForces - 1506G Maximize the Remaining String(单调栈+贪心)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的字符串,假设共出现了 kkk 种字母,现在要求出一个长度为 kkk 的子序列,满足每种字母只出现一次,且字典序最大 题目分析:和之前牛客上的一道 ...

  7. 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 ...

  8. Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 括号序列 dp+栈

    点击打开链接 题意: 给你一个括号序列,让你找到最长的连续的合法括号序列 然后让你输出这个括号序列的长度是多少 这么长的括号序列一共有多少个 思路: 看到括号匹配,就用stack来弄就好了 然后我们d ...

  9. Codeforces Round #401 (Div. 2) E. Hanoi Factory 栈

    E. Hanoi Factory 链接: http://codeforces.com/contest/777/problem/E 题解: 排序b从小到大,在b相同排序a从小到大,使其满足如果i-1不能 ...

最新文章

  1. pandas.DataFrame删除/选取含有特定数值的行或列实例
  2. FZ25/FZ35 恒流电子负载
  3. N个数的全排列 -------指定排头法
  4. 51nod 1536不一样的猜数游戏 思路:O(n)素数筛选法。同Codeforces 576A Vasya and Petya‘s Game。
  5. 微信 for Mac 3.1.0 测试版发布(附安装包),新增「发朋友圈」功能
  6. 映射到另一台计算机,远程服务器硬盘映射到本地电脑
  7. STL之set_union、set_intersection、set_difference、set_symmetric_difference
  8. python截图直接在内存里调用_Python-按块上传FTP中的内存文件(由API调用生...
  9. 逛知乎才知网站建设不只有wordpress建站系统,小白值得收藏
  10. 保存画面为图片 当前MFC保存该程序为图片 c++ vc
  11. 计算机sci二区期刊,图像处理的sci二区期刊有哪些
  12. ROVIO安装运行及保存轨迹用evo评估
  13. 【javascript】详解javaScript的深拷贝
  14. 裁员的第一波枪声,从游戏行业响起了?
  15. 国家计算机病毒中心发现篡改IE的恶意木马
  16. eBay自养号测评需要准备哪些资料?
  17. Homework02
  18. 微型计算机温度控制系统,单片机实现PC机温度控制系统方案
  19. vertical-align属性的运用及注意事项
  20. 2 评价类算法:TOPSIS法笔记(附Python代码)

热门文章

  1. 高并发常见的解决方案
  2. 留学生最常用最全的五个英文文献检索网站
  3. 网页抓取表格_使用Google表格进行网页抓取
  4. Android繁星眨眼动画效果
  5. 1052 卖个萌 (20分)特殊符号输入
  6. 公众号openid能做用户识别_做公众号能不能转载别人文章?我的建议是...
  7. 使用elastix搭建IP电话及传真
  8. 针对Object和Array深拷贝处理
  9. Windows7安装mysql-压缩包方式
  10. 关于SearchView设置字体颜色,提示字体及背景的解决方法