有一个长度为n的数组{a1,a2,...,an}。m次询问,每次询问一个区间内最小没有出现过的自然数。

这是一个经典的主席树的题目,对于每个节点i开一颗线段树存储[1,i]区间内每个数最后出现的位置,那么查找的时候直接再树上类似平衡树找最小即可

#pragma GCC opitmize("O3")
#pragma G++ opitmize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 200010
#define M 1000000000
using namespace std;
struct tree{int l,r,v;
} s[N*50];
int rt[N],n,m,cnt=0;
void insert(int l,int r,int r1,int& r2,int k,int id){if(!r2) r2=++cnt;if(l==r){ s[r2].v=id; return; }int m=l+r>>1;if(k<=m){ s[r2].r=s[r1].r; insert(l,m,s[r1].l,s[r2].l,k,id); }else { s[r2].l=s[r1].l; insert(m+1,r,s[r1].r,s[r2].r,k,id); }s[r2].v=min(s[s[r2].l].v,s[s[r2].r].v);
}
int query(int l,int r,int r1,int k){if(s[r1].v>=k) return M;if(l==r) return l;int m=l+r>>1;if(s[s[r1].l].v<k) return query(l,m,s[r1].l,k);return query(m+1,r,s[r1].r,k);
}
int main(){scanf("%d%d",&n,&m);for(int x,i=1;i<=n;++i){scanf("%d",&x);insert(0,M,rt[i-1],rt[i],x,i);}for(int l,r;m--;){scanf("%d%d",&l,&r);printf("%d\n",query(0,M,rt[r],l));}
}

Jzoj3547 MEX相关推荐

  1. BZOJ 3585: mex( 离线 + 线段树 )

    离线, 询问排序. 先处理出1~i的答案, 这样可以回答左端点为1的询问.完成后就用seq(1)将1到它下一次出现的位置前更新. 不断这样转移就OK了 ------------------------ ...

  2. 构造 ---- 最小没出现过的数(逆向构造) D. Replace by MEX

    题目链接 题目大意: 给你一个aaa序列长度为nnn,每次挑选一个位置pos∈[1,n]pos\in[1,n]pos∈[1,n],把apos=MEX(a)a_{pos}=MEX(a)apos​=MEX ...

  3. [模板] 区间mex 区间元素种数

    区间mex 问题 给定序列\({a_i}\), 每次询问给出\(l\), \(r\), 询问 \(\text{mex} \{a_i\}, i \in \{l, l+1, \cdots r\}\) 解法 ...

  4. 使用matlab进行mex编译时的路径问题mexopts

    matlab和vs 进行混合编程时总须要使用matlab编译mexFunction.cpp文件. 这些文件免不了使用include下的*.h和lib下的*.lib文件.举例说明.这次我的cpp中用到了 ...

  5. “Matlab R2016a中运行‘mex -setup’,错误使用 mex 未找到支持的编译器或 SDK”的解决办法

    目录 问题描述: 原因分析: 解决方案: 1.失败经验 2.成功方法 (1)下载MinGW-w64 C/C++ 编译器 (2)安装MinGW-w64 C/C++ 编译器 (3)设置为系统环境变量 (4 ...

  6. cmake重新编译matlab,ubuntu系统下cmake 编译matlab中mex文件

    cmake 编译工程具有独特的优势,特别对于复杂的工程更是如此.利用matlab直接编译mex文件时,对于文件数据多的工程时,需要列举所有文件,并且要按照依赖关系排 cmake 编译工程具有独特的优势 ...

  7. matlab编译错误怎么查找,matlab - Matlab mex文件编译错误-“未启用SSE2指令集” - 堆栈内存溢出...

    在Matlab中编译mex文件的工具箱时,出现以下错误: In file included from /home/josh/Desktop/Project/code/toolbox/channels/ ...

  8. matlab和C/C++混合编程--Mex

    最近的项目需要matlab和C的混合编程,经过一番努力终于完成了项目要解决的问题.现在就将Mex的一些经验总结一下,当然只是刚刚开始,以后随着学习的深入继续添加.首先讲讲写Mex的一些常规规定,然后我 ...

  9. mex+matlab2013b+vs2012安装

    要用到matlab vs混合编程... 原来的MATLAB2012b仅能支持到vs2010.这样使用 mex -setup会有问题的..找不到vs2012的编译器 好在2013b可以支持了.不用改啊改 ...

最新文章

  1. shell设置系统环境变量的问题
  2. 第一讲 IDLE使用
  3. 对学校的希望和寄语_南中医举行2020年开学典礼,校长胡刚寄语“后浪”:乘风破浪,扬帆起航...
  4. 5 华为兼容性 双指缩放_华为EMUI10“滚屏翻译”之背后的学问
  5. 双向广搜 8数码问题
  6. LAMP+Zabbix课程总结
  7. java akka actor性能_akka-http - 如何通过Akka HTTP(Java)与Akka Actor进行交互 - 堆栈内存溢出...
  8. C#程序加密工具.Net Reactor教程
  9. Ubuntu软件仓库管理
  10. SSM框架整合(以黑马程序员2022最新SSM框架教程P59为例)
  11. 数字孪生智慧医院:构建三维医疗看板可视化管理平台(四)
  12. 小米手机miui12系统下拉通知栏有通知但是看不到通知内容
  13. D盘需要管理员权限解决办法
  14. sir模型初始值_SIR模型简单了解(Susceptible Infected Recovered Model)
  15. 15分钟的html倒计时,js实现5分钟倒计时
  16. ModelWhale 云端运行 WRF 中尺度数值气象模式,随时随地即开即用的一体化工作流
  17. FFmpeg视频剪辑常用命令
  18. POJ1007 DNA Sorting中英对照翻译与参考解答
  19. 哪个牌子的蓝牙耳机音质好?公认音质最好的真无线耳机推荐
  20. 利用Office PPT录制演示视频

热门文章

  1. wechat4j开发-菜单创建
  2. C++中atof ,atoi函数用法
  3. Linux中分卷压缩和合并解压
  4. 蓝桥杯 算法训练 未名湖边的烦恼 C语言
  5. 75个JavaScript面试题集锦,内含解答,自测 JS 掌握程度
  6. IP协议及MAC帧格式
  7. 教你做一个送别人女友的网页相册(一)(HTML+CSS+JS实现)
  8. citra 图形设置_功能强大的图形绘制软件
  9. 交通运输大数据发展特点、政策、应用及趋势 | 交通运输部科学研究院黄莉莉
  10. mysql索引用trie树_数据结构与算法之美【完整版】