传送门

文章目录

  • 题意:
  • 思路:

题意:

思路:

按照值建线段树,每个位置维护值出现的最后位置,让后可持久化一下,当查询[l,r][l,r][l,r]的时候,我们只需要在[1,r][1,r][1,r]中找最后出现位置<l<l<l的位置即可,也就是在主席树的第rrr棵树找值<l<l<l的位置的最小值,直接在上面二分就好啦。
注意因为要求mexmexmex,还要把0,a[i]+10,a[i]+10,a[i]+1都插入。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m;
int a[N],tot;
int root[N];
vector<int>v;
struct Node
{int l,r;int mi;
}tr[N*40];void insert(int p,int &q,int l,int r,int x,int pos)
{q=++tot; tr[q]=tr[p];if(l==r) { tr[q].mi=pos; return; }int mid=l+r>>1;if(x<=mid) insert(tr[p].l,tr[q].l,l,mid,x,pos);else insert(tr[p].r,tr[q].r,mid+1,r,x,pos);tr[q].mi=min(tr[tr[q].l].mi,tr[tr[q].r].mi);
}int query(int u,int l,int r,int x)
{if(!u||l==r) return v[l-1];int mid=l+r>>1;if(x>tr[tr[u].l].mi) return query(tr[u].l,l,mid,x);else return query(tr[u].r,mid+1,r,x);
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);scanf("%d%d",&n,&m); v.pb(0);for(int i=1;i<=n;i++) scanf("%d",&a[i]),v.pb(a[i]),v.pb(a[i]+1);sort(v.begin(),v.end()); v.erase(unique(v.begin(),v.end()),v.end());for(int i=1;i<=n;i++){a[i]=lower_bound(v.begin(),v.end(),a[i])-v.begin()+1;insert(root[i-1],root[i],1,v.size(),a[i],i);}while(m--){int l,r; scanf("%d%d",&l,&r);printf("%d\n",query(root[r],1,v.size(),l));}、return 0;
}
/**/

P4137 Rmq Problem / mex 主席树求mex相关推荐

  1. Greedy Sequence(2019南京icpc网络预选赛)主席树求区间小于k的最大值

    题意:给出n个整数,构造s1,s2,s3-sn s1,s2,s3-sns1,s2,s3-sn,si sisi满足五个条件 1.s1[i]=i s1[i]=is1[i]=i 2.对于1<j< ...

  2. 牛客 - 牛牛的mex(主席树/思维)

    题目链接:点击查看 题目大意:给出一个长度为 n 的排列,再给出 m 次询问,每次询问需要回答区间 [ l , r ] 的 mex 题目分析:算是一道比较经典的题目了吧,先说一般做法,一般做法是 nl ...

  3. array(2019CCPC网络预选赛 hdu6703主席树+set)主席树求大于等于k的最小值

    Problem Description You are given an array a1,a2,-,an(∀i∈[1,n],1≤ai≤n). Initially, each element of t ...

  4. hdu 5919--Sequence II(主席树--求区间不同数个数+区间第k大)

    题目链接 Problem Description Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2 ...

  5. 【CF464E】The Classic Problem(主席树+最短路)

    点此看题面 大致题意: 给你一张无向图,每条边的边权为\(2^{x_i}\),求\(s\)到\(t\)的最短路. 最短路 最短路,首先考虑\(Dijkstra\).这里用\(SPFA\)似乎不太好,因 ...

  6. [蓝桥杯][2016年第七届真题]压缩变换(主席树求区间不同数的个数)

    题目描述 小明最近在研究压缩算法. 他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比. 然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面 ...

  7. CF464E The Classic Problem(主席树+哈希+最短路)

    CF464E The Classic Problem problem solution code problem 题目链接 solution 经典题. 本题很特别的是每条边的边权都是 222 的幂,而 ...

  8. D-query SPOJ - DQUERY(主席树求区间中不同的数的个数)

    题意 给出n个数,m个询问,每个询问给出一个区间,需要回答这个区间中不同的数的个数 题目 {assign var="code" value="DQUERY"} ...

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

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

最新文章

  1. skimage函数记录之measure.label和measure.regionprops
  2. CodeForces - 888C K-Dominant Character 思维
  3. Redis 高可用性实践
  4. windows截图c语言,window 截取屏幕,并实现jpeg压缩
  5. Nginx性能优化功能- Gzip压缩(大幅度提高页面加载速度)
  6. String类型转换的三种方法分析
  7. 戴文的Linux内核专题:08内核配置(4)
  8. 图文并茂!CIC滤波器的FPGA实现
  9. 外接显示器,多屏幕显示,出现鼠标移动缓慢,卡顿
  10. C4D模型工具—提取样条
  11. mysql dateofweek_日历表-月的周数
  12. 微信网页版打不开怎么办?这里有官方解决办法!
  13. 台式计算机中经常使用的硬盘多是多少英寸,笔记本硬盘和台式机硬盘有什么不同...
  14. 全文搜索引擎ElasticSearch
  15. tmux命令启动MySQL_程序后台运行的几种方法
  16. Linux一条命令----同步网络时间
  17. Google CEO 毕业演讲:保持开放、拥抱焦虑、怀抱希望
  18. 【java毕业设计】基于javaEE+原生Servlet+MySql的Web停车场管理系统设计与实现(毕业论文+程序源码)——停车场管理系统
  19. ubuntu 安装FoxitReader福昕阅读器
  20. 计算机考研数学试卷,考研数学试卷大全(全国各高校历年试卷)

热门文章

  1. DeepMind 的马尔可夫决策过程(MDP)课堂笔记
  2. 相信应该有百分九十的男生看见这个东西是这个状态吧?
  3. 钟南山团队在患者粪便中检出新冠活病毒,国家卫健委回应!专家:做好这事很重要...
  4. linux7为nginx添加服务,CentOS7添加Nginx为系统服务
  5. qt4.7 mysql_详解Qt 4.7编译和访问Mysql驱动
  6. android 版本28 通知栏图标,【专题分析】应用图标、通知栏适配
  7. 登录服务器修改数据库吗,如何修改服务器登录数据库 sa
  8. python图片读取优化_python读取raw binary图片并提取统计信息的实例
  9. java file rename 失败_java重命名文件造成文件不可读写
  10. java 声明变量构成_Java—变量