首页 > 其他 > 详细

51nod1423 最大二“货”

时间:2019-10-13 09:29:43      阅读:77      评论:0      收藏:0      [点我收藏+]

[传送门]

 

单调栈其实就是个后缀$max/min$,这道题可以维护一个单调递减的单调栈,pop元素的时候,能pop掉的元素就是第二大,当前元素为第一大。遇到第一个不能pop掉的时候当前元素就是第二大,不能pop掉的元素就是第一大。

 

技术分享图片
#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 7;
int st[N], top;

int main() {
    int n;
    while (~scanf("%d", &n)) {
        top = 0;
        int ans = 0;
        for (int i = 1, x; i <= n; i++) {
            scanf("%d", &x);
            while (top && st[top] < x) 
                ans = max(ans, x ^ st[top--]);
            if (top)
                ans = max(ans, x ^ st[top]);
            st[++top] = x;
        }
        printf("%d\n", ans);
    }
    return 0;
}
View Code

 

51nod1423 最大二“货”

原文:https://www.cnblogs.com/Mrzdtz220/p/11664622.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!