单调栈——51nod 1423 最大二“货”
2017-07-02 14:08
190 查看
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1423
我们直接搞一个递减单调栈;
对于每一个当前的x;
可以发现栈里的所有比X小的值都代表了一个区间的次大值,最大值就是X;
那么我们不断弹出这些数并且计算答案就好了,最后把x压入栈;
当然喽,这个仅仅是次大值在最大值前面的情况;
我们直接搞一个递减单调栈;
对于每一个当前的x;
可以发现栈里的所有比X小的值都代表了一个区间的次大值,最大值就是X;
那么我们不断弹出这些数并且计算答案就好了,最后把x压入栈;
当然喽,这个仅仅是次大值在最大值前面的情况;
#include<bits/stdc++.h> #define Ll long long using namespace std; const int N=1e5+5; int a ,q ; int r,n,m,ans; void work(){ q[r=1]=a[1]; for(int i=2;i<=n;i++){ while(r&&q[r]<a[i])ans=max(ans,a[i]^q[r--]); q[++r]=a[i]; } } int main() { while(scanf("%d",&n)!=-1){ ans=0; for(int i=1;i<=n;i++)scanf("%d",&a[i]); work(); for< 4000 /span>(int i=1;i<=n/2;i++)swap(a[i],a[n-i+1]); work(); printf("%d\n",ans); } }
相关文章推荐
- 51nod-1423 最大二“货”(单调栈)
- 51nod 1423 最大“二货”【单调栈】
- 【单调栈】51Nod 1423 最大二“货”
- 【51Nod】1102 - 面积最大的矩形面积(单调栈)
- 51nod 1254 最大子段和 V2 ——单调栈
- 51nod 1423:最大二“货”
- 51nod 1423:最大二“货”
- 51nod 1272 最大距离 (单调栈)
- 51nod 1102 面积最大的矩形(单调栈)
- 51nod 1102 面积最大的矩形(单调栈)
- 51nod-1158 全是1的最大子矩阵(单调栈)
- 51nod 1349 最大值(单调栈)
- 51nod-1158 . 全是1的最大子矩阵 &&CODEVS-2491 玉蟾宫(枚举+单调栈 or dp)
- 51nod 1102 面积最大的矩形【单调栈、预处理】
- 51Nod-1423-最大二"货"
- 51Nod - 1349 最大值(单调栈)
- 51nod 1349 最大值【单调栈】
- 【单调栈】51Nod 1349 最大值
- 51nod 1272 最大距离 (贪心或单调栈)
- 51nod 1423 最大二“货”