1423 最大二“货”
题目来源: CodeForces
基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题

 收藏
 取消关注

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

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

现在有一个序列 s1, s2, ..., sn (n > 1) 。 Undefined control sequence \[ 表示子段  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

维护一个栈顶到栈底逐渐增大的栈,这样的话栈内元素就是各自区间内的最大值。发现一个元素大于栈顶元素的时候入栈,并且入栈的时候会发现它本身和它栈内左边的元素恰恰是区间的次大值和最大值,相与取结果。最后要从后到头重来一次。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std;#define maxn 100005
int n;
int val[maxn];
int lef[maxn];
int stack[maxn];int main()
{int i, res, top, tmp;scanf("%d", &n);for (i = 0; i < n; i++)scanf("%d", val + i);res = 0;top = 0;memset(stack, 0, sizeof(stack));for (i = 0; i < n; i++){while (top >= 1 && val[i] > val[stack[top]]){--top;}if (top){res = max(res, val[i] ^ val[stack[top]]);}stack[++top] = i;}top = 0;memset(stack, 0, sizeof(stack));for (i = n; i >= 0; i--){while (top >= 1 && val[i] > val[stack[top]]){--top;}if (top){res = max(res, val[i] ^ val[stack[top]]);}stack[++top] = i;}printf("%d\n", res);//system("pause");return 0;
}

51nod 1423:最大二“货”相关推荐

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

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

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

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

  3. 51nod1423 最大二“货”

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

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

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

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

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

  6. 51nod1423 最大二“货”问题

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

  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(11)-Linux系统下用户权限管理
  2. 商丘网络推广中网站内部优化需要注意的要点有哪些?
  3. vi的visual模式
  4. 【opencv】——钢管计数(霍夫圆变换 + 阈值 + canny)
  5. 软件测试的目标及组织测试过程
  6. 分割字符串函数strtok
  7. 【问题解决】电脑连接自家WiFi不能进B站而手机能进
  8. jadx反编译—下载和使用(傻瓜教程,非常详细)
  9. 前端自学day04——css基础
  10. 学python最重要的是什么_学Python之前,什么最重要?
  11. androidBasic
  12. HTML的基本结构标签与网页开发工具
  13. h5实现移动端拍照展示功能
  14. 如何在Windows中使用虚拟文件测试网络或硬盘速度
  15. 德国基尔大学 计算机系,德国基尔大学强大的学术能力介绍
  16. ABAP Docking Control Container开发实例
  17. 虚幻引擎图文笔记:“ThirdPerson_Jump Asset“节点和“ThirdPerson_JumpStart Asset“节点到底是啥?
  18. MQTT 协议解析,java使用
  19. 什么是CSS权重值?CSS权重值的优先级是什么?
  20. RTKLIB中伪距单点定位的函数(一)

热门文章

  1. 【云原生之Docker实战】使用Docker部署Lsky Pro个人图床平台
  2. cocos 随机变色的拖尾
  3. 地图数据可视化库folium
  4. Excel办公中的应用(中秋快乐学习)(注意:全部为英文符号)
  5. 线上AI僚机,告诉你对方喜好,手把手教你如何正确约会
  6. 面试官问了四个问题,总结了4个经验
  7. 王子恢:手机视频牌照与行政权力租界
  8. Spark入门实战系列--1.Spark及其生态圈简介
  9. 全球与中国细胞推刮器市场现状及未来发展趋势
  10. 解决Pycharm绘图报错:Error: failed to send plot to http://127.0.0.1:63342