codeforces319——B. Psychos in a Line(思维+单调栈)

简介: codeforces319——B. Psychos in a Line(思维+单调栈)

原题链接

题意:

20200401134307494.png思路:

力推聚聚博客

确实很思维。

记录每个人第几次被打死的,那么n个人的最大值就是答案。

一个人y如果想被打死,他左边要有一个比他大的数,记作x,那么从x到y的过程,y的次数就是x到y的最大值+1。因为不能只能打死相邻的人,所以要等到x到y之间的人都被打死之后y才能被打死,也就是x到y之间的人的最大次数+1。

用单调栈维护,要注意栈为空的情况。

代码:

int a[maxn],n;
struct node{
    int val,step;
};
stack<node>stk;
int main(){
    n=read();
    for(int i=1;i<=n;i++) a[i]=read();
    int res=0;
    for(int i=1;i<=n;i++){
        int t=0;
        while(stk.size()>0&&stk.top().val<a[i]){
            t=max(t,stk.top().step);
            stk.pop();
        }
        if(stk.empty()) stk.push({a[i],0});
        else stk.push({a[i],t+1});
        res=max(res,stk.top().step);
    }
    out(res);
    return 0;
}
目录
相关文章
|
5天前
|
存储 算法 调度
数据结构与算法-栈篇
数据结构与算法-栈篇
12 3
|
1天前
数据结构 栈 / 队列(第9天)
数据结构 栈 / 队列(第9天)
|
1天前
|
存储 算法 程序员
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
|
2天前
数据结构——栈和队列
数据结构——栈和队列
|
2天前
|
C语言 C++
【数据结构】C语言实现:栈(Stack)与队列(Queue)
【数据结构】C语言实现:栈(Stack)与队列(Queue)
|
5天前
数据结构初阶 栈
数据结构初阶 栈
10 1
|
10天前
|
算法
数据结构和算法学习记录——栈和队列作业(实现链栈上的进栈、实现链栈上的退栈、实现链队上的入队列)
数据结构和算法学习记录——栈和队列作业(实现链栈上的进栈、实现链栈上的退栈、实现链队上的入队列)
11 0
|
19天前
|
存储 Java 容器
深入浅出 栈和队列(附加循环队列、双端队列)
深入浅出 栈和队列(附加循环队列、双端队列)
|
12天前
|
存储 缓存 算法
【数据结构】栈和队列的模拟实现(两个方式实现)
【数据结构】栈和队列的模拟实现(两个方式实现)
|
10天前
|
算法 C语言
数据结构和算法学习记录——栈和队列习题-用队列实现栈、用栈实现队列(核心思路、解题过程、完整题解)二
数据结构和算法学习记录——栈和队列习题-用队列实现栈、用栈实现队列(核心思路、解题过程、完整题解)二
14 2