白克喜欢找一个序列中的次大值。对于一个所有数字都不同的序列 x1, x2, ..., xk (k > 1) ,他的次大值是最大的 xj  ,并且满足 xj ≠maxki=1 xi

对于一个所有数字都不同的序列 x1, x2, ..., xk (k > 1) ,他的幸运数字是最大值和次大值的异或值(Xor)。

现在有一个序列 s1, s2, ..., sn (n > 1) 。 s[l,r] 表示子段  sl, sl+1, ..., sr  。你的任务是找出所有子段的最大幸运数字。

注意,序列s中的所有数字都是不同的。

Input
单组测试数据。
第一行有一个整数n (1 < n ≤ 10^5)。
第二行包含n个不同的整数 s1, s2, ..., sn (1 ≤ si ≤ 10^9)。
Output
输出所有子段的最大幸运值。
Input示例
5
5 2 1 4 3
5
9 8 3 5 7
Output示例
7
15
System Message (题目提供者)
C++的运行时限为:1000 ms ,空间限制为:131072 KB 示例及语言说明请按这里

题解:思路真是巧妙。。

我们维护一个单调递减的栈,然后发现每次一个数进栈的时候,那些弹出栈的数都对应某一个区间的次大值(最大值就是要进栈的数),所以我们每次弹栈的时候更新一下答案就好了。

然后这个只是次大值在最大值之前的情况,之后的情况再把a数组反过来操作一遍就行。

代码:

#include<bits/stdc++.h>
using namespace std;
int n,i,r,ans,a[1000000],b[1000000];
int main(){scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=1;i<=n;i++){while(r&&b[r]<a[i])ans=max(ans,a[i]^b[r--]);b[++r]=a[i];}memset(b,0,sizeof(b));r=0;for(i=n;i;i--){while(r&&b[r]<a[i])ans=max(ans,a[i]^b[r--]);b[++r]=a[i];}printf("%d",ans);
}

51nod1423 最大二“货”问题相关推荐

  1. 51nod1423 最大二“货”

    题面在这里 我们维护一个单调递减的栈,然后发现每次一个数进栈的时候,那些弹出栈的数都对应某一个区间的次大值(最大值就是要进栈的数),所以我们每次弹栈的时候更新一下答案就好了. 然后这个只是次大值在最大 ...

  2. 51nod-1423 最大二“货”(单调栈)

    原题链接 1423 最大二"货" 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 白克喜欢找一 ...

  3. 51nod 1423:最大二“货”

    1423 最大二"货" 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  取消关注 白克喜欢找一个序列 ...

  4. 幽默故事:1、背对猜字;2、二货老婆与狗(木子家原创)

    1.去年公司联欢会上,有一个节目是,一个女同事按照主持人题板上写的字,进行比划,给背对着主持人的那个二货男同事猜,主持人在题板上写了一个"脸"字,那个女同事对着那个二货男同事指着自 ...

  5. 51nod 1423 最大二“货” 单调栈

    利用单调栈,高效求出每个区间内的最大值和次大值的亦或值. 先正向扫描,利用单调递减栈,若当前栈为空栈,则直接压入栈中,若为非空栈,弹出栈顶元素,每弹出一个元素,则求一次亦或值,保留最大值 接着进行反向 ...

  6. 51nod 1423 最大“二货”【单调栈】

    Description 白克喜欢找一个序列中的次大值.对于一个所有数字都不同的序列 x1, x2, -, xk (k > 1) ,他的次大值是最大的 xj ,并且满足 xj ≠maxki=1 x ...

  7. 微信扫码支付的时候报system error 错误,只能说微信是个二货

    某次做微信扫码支付开发的时候一直程序一直报system error这个错误,经过小M的仔细筛查,发现错误在WxPay.Api.php这个文件中的postXmlCurl这个提交方法中..,微信你想干什么 ...

  8. 跳出数据计算拯救人工智能之打败机器学习方法详解二

    上回分析的够透彻了吧 计算方面就使用填字数据结构计算 存储方面使用数据库表的方式存储 为了方便就都使用 填字的方式进行试验 首先要知道采取上回说到的65535个二进制位进行代表人类的文字信息的话 那么 ...

  9. python 全栈开发,Day128(创建二维码,扫码,创建玩具的基本属性)

    python 全栈开发,Day128(创建二维码,扫码,创建玩具的基本属性) 昨日内容回顾 1.app播放音乐plus.audio.createPlayer(文件路径/URL)player.play( ...

最新文章

  1. Linux下编译安装Apache、php和svn
  2. 如何安装Pycharm官方统计代码行插件
  3. C++基本操作符重载
  4. 原型设计20条军规(转)
  5. c调用按钮点击事件_Unity3d---对UI事件接口的一些测试和机制(坑)的总结
  6. 算法(第4版)Robert Sedgewick 刷题 第一章(1)
  7. Azure 上的网站如何识别不同国家和地区的用户
  8. Java限流之 —— Sentinel初识
  9. Drools环境搭建
  10. 接口测试 python+PyCharm 环境搭建
  11. 如何让循环里面语句执行完之后再去循环第二次_Go循环语句的使用
  12. ffmpeg教程 如何输出任务日志?用于进度条显示
  13. ioc performanceTest
  14. 2021-04-09
  15. MVC、MVP与MVT
  16. 怎样让小孩变成机灵顾客
  17. Linux环境准备五---VMWare打开CentOS虚拟机报错VT(长模式不兼容)等错误的解决方案
  18. Latex单行/多行公式居中/左对齐
  19. 公共经济学(开卷)期末复习题
  20. 移动照片社交应用成美网络新宠

热门文章

  1. 程序员合同日期不到想辞职_在职场,辞职有时是难免的,要怎样写辞职信才好呢...
  2. 漫画:如何分别使用8种编程语言拯救公主
  3. 数字人民币在上海试点,首次实现脱离手机的硬钱包支付模式!
  4. 计算机信息学院运动会入场式,厦门大学信息学院第一届新生运动会成功举办
  5. Android中高级面试必知必会,绝对干货
  6. python里面的pip是什么意思_“pip install”和“python -m pip install”有什么区别?
  7. 2013 NMPD展示预览,第1部分
  8. 转载:联想小新进入BIOS方法
  9. PCM开发板模块实验指导--SPI读写PSRAM64实验
  10. 关于全球时间的一点理解