P4137 Rmq Problem / mex 主席树求mex
传送门
文章目录
- 题意:
- 思路:
题意:
思路:
按照值建线段树,每个位置维护值出现的最后位置,让后可持久化一下,当查询[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相关推荐
- 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< ...
- 牛客 - 牛牛的mex(主席树/思维)
题目链接:点击查看 题目大意:给出一个长度为 n 的排列,再给出 m 次询问,每次询问需要回答区间 [ l , r ] 的 mex 题目分析:算是一道比较经典的题目了吧,先说一般做法,一般做法是 nl ...
- 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 ...
- hdu 5919--Sequence II(主席树--求区间不同数个数+区间第k大)
题目链接 Problem Description Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2 ...
- 【CF464E】The Classic Problem(主席树+最短路)
点此看题面 大致题意: 给你一张无向图,每条边的边权为\(2^{x_i}\),求\(s\)到\(t\)的最短路. 最短路 最短路,首先考虑\(Dijkstra\).这里用\(SPFA\)似乎不太好,因 ...
- [蓝桥杯][2016年第七届真题]压缩变换(主席树求区间不同数的个数)
题目描述 小明最近在研究压缩算法. 他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比. 然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些序列的特点是,后面 ...
- CF464E The Classic Problem(主席树+哈希+最短路)
CF464E The Classic Problem problem solution code problem 题目链接 solution 经典题. 本题很特别的是每条边的边权都是 222 的幂,而 ...
- D-query SPOJ - DQUERY(主席树求区间中不同的数的个数)
题意 给出n个数,m个询问,每个询问给出一个区间,需要回答这个区间中不同的数的个数 题目 {assign var="code" value="DQUERY"} ...
- 【bzoj 3339】Rmq Problem 【bzoj 3585】mex(可持久化线段树)
传送门biu~biu~ 两道题区别只在于ai的范围,显然>=n的那些ai都是没有意义的,因此两题相同. 权值线段树上的i点记录数字i的最右出现位置,查询区间[l,r]即为查询第r棵线段树上最小的 ...
最新文章
- skimage函数记录之measure.label和measure.regionprops
- CodeForces - 888C K-Dominant Character 思维
- Redis 高可用性实践
- windows截图c语言,window 截取屏幕,并实现jpeg压缩
- Nginx性能优化功能- Gzip压缩(大幅度提高页面加载速度)
- String类型转换的三种方法分析
- 戴文的Linux内核专题:08内核配置(4)
- 图文并茂!CIC滤波器的FPGA实现
- 外接显示器,多屏幕显示,出现鼠标移动缓慢,卡顿
- C4D模型工具—提取样条
- mysql dateofweek_日历表-月的周数
- 微信网页版打不开怎么办?这里有官方解决办法!
- 台式计算机中经常使用的硬盘多是多少英寸,笔记本硬盘和台式机硬盘有什么不同...
- 全文搜索引擎ElasticSearch
- tmux命令启动MySQL_程序后台运行的几种方法
- Linux一条命令----同步网络时间
- Google CEO 毕业演讲:保持开放、拥抱焦虑、怀抱希望
- 【java毕业设计】基于javaEE+原生Servlet+MySql的Web停车场管理系统设计与实现(毕业论文+程序源码)——停车场管理系统
- ubuntu 安装FoxitReader福昕阅读器
- 计算机考研数学试卷,考研数学试卷大全(全国各高校历年试卷)
热门文章
- DeepMind 的马尔可夫决策过程(MDP)课堂笔记
- 相信应该有百分九十的男生看见这个东西是这个状态吧?
- 钟南山团队在患者粪便中检出新冠活病毒,国家卫健委回应!专家:做好这事很重要...
- linux7为nginx添加服务,CentOS7添加Nginx为系统服务
- qt4.7 mysql_详解Qt 4.7编译和访问Mysql驱动
- android 版本28 通知栏图标,【专题分析】应用图标、通知栏适配
- 登录服务器修改数据库吗,如何修改服务器登录数据库 sa
- python图片读取优化_python读取raw binary图片并提取统计信息的实例
- java file rename 失败_java重命名文件造成文件不可读写
- java 声明变量构成_Java—变量