【原题题面】传送门

【题解大意】

都说了是莫队练习题。

考虑已知[l,r]区间的mex值时,如何求[l+1,r]的mex值。

比较a[l+1]与已知ans的大小,如果a[l+1]>ans或者a[l+1]<ans,均对答案没有影响。

如果a[l+1]==ans,考虑找到一个比当前ans更大且出现次数为0的点。

其余的区间扩展亦同理。

交上去的代码一直WA,各路神仙路过请帮忙看下,谢谢!

【code】

#include<bits/stdc++.h>
using namespace std;
#define File "testdata"
#define ll long long
inline void file(){freopen(File".in","r",stdin);freopen(File".ans","w",stdout);
}
inline int read(){int x=0,f=1;   char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0'; ch=getchar();}return x*f;
}
const int mxn = 2e5+5;
int n,m,Block;
int a[mxn],cnt[mxn],ans[mxn];
struct Q{int l,r,id;
}q[mxn];inline bool cmp1(Q x,Q y){if((x.l/Block)^(y.l/Block)) return x.l < y.l;else if((x.l/Block)&1) return x.r < y.r;return x.r > y.r;
}int answer = 0;
inline void mov1(int x){cnt[a[x]] ++;if(cnt[a[x]]==1 && answer==a[x]){int t = a[x];while(++t && !cnt[t]){answer = t;return;}}
}//add
inline void mov2(int x){cnt[a[x]] --;if(answer>a[x] && !cnt[a[x]]){answer = a[x];return;}
}//delint main(){
//    file();n = read(),m = read();for(int i = 1;i <= n; ++i) a[i] = read();for(int i = 1;i <= m; ++i)q[i].l = read(),q[i].r = read(),q[i].id = i;Block = (int)sqrt(n);int l(1),r(0);sort(q+1,q+m+1,cmp1);for(int i = 1;i <= m; ++i){int ql = q[i].l,qr = q[i].r;while(ql < l) mov1(l-1),l--;while(ql > l) mov2(l),l++;while(qr > r) mov1(r+1),r++;while(qr < r) mov2(r),r--;ans[q[i].id] = answer;}for(int i = 1;i <= m; ++i) printf("%d\n",ans[i]);return 0;
}
/*
5 5
2 1 0 2 1
3 3
2 3
2 4
1 2
3 5
*/

View Code

转载于:https://www.cnblogs.com/ve-2021/p/10900503.html

【BZOJ 3339 / BZOJ 3585 / luogu 4137】Rmq Problem / mex相关推荐

  1. 【bzoj 3339】Rmq Problem 【bzoj 3585】mex(可持久化线段树)

    传送门biu~biu~ 两道题区别只在于ai的范围,显然>=n的那些ai都是没有意义的,因此两题相同. 权值线段树上的i点记录数字i的最右出现位置,查询区间[l,r]即为查询第r棵线段树上最小的 ...

  2. 【清北前紧急补课1】rmq

    poj3264 balanced lineup 题目描述 For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always lin ...

  3. 【ybtoj高效进阶6-6-2】 期望分数/WJMZBMR打osu! / Easy 【luogu P1365】

    期望分数[ybtoj高效进阶6-6-2] WJMZBMR打osu! / Easy [luogu P1365] 题目描述: 给定一个长度为n的由 o,x,? 组成的字符串.计算分数的规则如下:连续 a ...

  4. SpringBoot 【IDEA热部署+浏览器禁用缓存】迅速提升效率

    SpringBoot微服务写页面,每次都需要重启才生效,使用[IDEA热部署+浏览器禁用缓存]迅速提升效率: 参考 https://blog.csdn.net/qq_27416233/article/ ...

  5. PHP安装扩展mcrypt以及相关依赖项 【PHP安装PECL扩展的方法】

    一:Mcrypt简介 Mcrypt是PHP的一个扩展,完成了常用加密算法的封装.其实该扩展是对mcrypt标准类库的封装,mcrypt完成了相当多的常用加密算法,如DES, TripleDES, Bl ...

  6. 【No.5 类型转换导致的错误】

    ==[注意]== 程序语言只是我们与计算机交流并让计算机实现我们创造性思想的工具,可以并鼓励深入掌握一门语言,但千万别沉迷于钻某种语言的牛角尖,一定要把握好二者间的度 本帖属不定时连载贴,以试卷的形式 ...

  7. 2021年Java面试题目最新总结【90%面试会踩的坑】

    学会java技术之后大家面临的最多的问题就是面试这关,求职面试java岗位是否能够成功是直接影响我们的工作机会的,所以对于Java程序员面试你准备好了吗?今天小编汇总了一下关于Java程序员面试,90 ...

  8. 【WEB API项目实战干货系列】- API登录与身份验证(三)

    上一篇: [WEB API项目实战干货系列]- 接口文档与在线测试(二) 这篇我们主要来介绍我们如何在API项目中完成API的登录及身份认证. 所以这篇会分为两部分, 登录API, API身份验证. ...

  9. zw版【转发·台湾nvp系列Delphi例程】HALCON Histogram

    zw版[转发·台湾nvp系列Delphi例程]HALCON Histogram unit Unit1; interface uses Windows, Messages, SysUtils, Vari ...

最新文章

  1. c++ 的重载、覆盖、隐藏
  2. 用canvas实现一个vue弹幕组件
  3. 《算法竞赛入门经典》习题——Chapter 3
  4. c语言 中insert变量值,c – 在VS2010中的vector :: insert执行意外结果
  5. linux拒绝tcp链接,Linux 内核 TCP SACK 拒绝服务问题
  6. DCMTK:使用dcmimage库将DICOM图像转换为PPM或PGM
  7. 弹层蒙版(mask),ios滚动穿透,我们项目的解决方案
  8. 开始入坑深度学习(DeepLearning)
  9. java纯数字正则表达式_JAVA验证数字的正则表达式,来一发
  10. Matlab常用函数:mode(X)
  11. python遍历字典的具体位置_python遍历字典
  12. VMware vSphere Management Assistant Guide
  13. js计算字典的个数_第11天:Python 字典
  14. Java核心技术11 | Java IO
  15. 关于Atmel A5D31平台ALC5640音频芯片的问题记录
  16. 网页木马是什么原理?
  17. nutch2.3.1 mysql_nutch 安装部署 以nutch2.3.1 为例
  18. Promise中then的返回值
  19. php写抢红包,红包生成函数(微信抢红包)
  20. NCRE | 三级网络技术笔记

热门文章

  1. 计算机表格收入水平怎么算,怎么用excel计算工资所得税
  2. linux的命令窗口,(翻译)Linux命令行(二)
  3. 命令行 蓝牙_Ubuntu使用BlueZ驱动蓝牙dongle
  4. 香农信息熵之可怜的小猪
  5. Linux实验一:常用的Linux命令
  6. leetcode339. 嵌套列表权重和
  7. Redis:12---有序集合对象
  8. Mysql服务器线上配置主从同步
  9. Makefile编写详解--项目开发
  10. 一文搞定面试中的二叉树问题