2018.10.31 bzoj3339&&3585mex(主席树)
传送门
双倍经验
直接上主席树,每个叶节点维护这个值出现的最右区间,非叶子节点维护当前值域内所有最右区间的最小值。
查询的时候只用在以root[qr]root[qr]root[qr]为根的树上面二分。
看左儿子满没有就只用看左边的最小值是不是大于qlqlql就行了。
代码:
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int N=2e5+5;
int n,q,rt[N],mex[N*50],son[N*50][2],tot=0,sig=0;
inline void update(int&p,int las,int l,int r,int k,int v){
p=++tot,son[p][0]=son[las][0],son[p][1]=son[las][1],mex[p]=mex[las];
if(l==r){mex[p]=v;return;}
int mid=l+r>>1;
if(k<=mid)update(son[p][0],son[las][0],l,mid,k,v);
else update(son[p][1],son[las][1],mid+1,r,k,v);
mex[p]=min(mex[son[p][0]],mex[son[p][1]]);
}
inline int query(int p,int l,int r,int k){
if(l==r)return l;
int mid=l+r>>1;
if(mex[son[p][0]]>=k)return query(son[p][1],mid+1,r,k);
return query(son[p][0],l,mid,k);
}
int main(){
n=read(),q=read();
for(int i=1;i<=n;++i)update(rt[i],rt[i-1],0,1e9,read(),i);
for(int i=1,l,r;i<=q;++i)l=read(),r=read(),printf("%d\n",query(rt[r],0,1e9,l));
return 0;
}
2018.10.31 bzoj3339&&3585mex(主席树)的更多相关文章
- [文章汇总]ASP.NET Core框架揭秘[最近更新:2018/10/31]
之前一段时间都在个人公众号账号“大内老A”发布关于ASP.NET Core的系列文章,很多人留言希望能够同步到这里,所以在这里 对这些文章做一个汇总,以便于PC端阅读.如果说微软官方文档主要关于ASP ...
- 2018.10.31 NOIP模拟 一些情报(倍增)
传送门 题目并不难(想) 其实就是用倍增维护几个树上信息. 也就这么几个: 子树内最长链及其后继点. 子树内次长链及其后继点. 子树内第三场链(也就是dzyodzyodzyo口中鬼畜的次次长链) 点i ...
- 2018.10.31 NOIP模拟 几串字符(数位dp+组合数学)
传送门 如果观察到性质其实也不是很难想. 然而考试的时候慌得一批只有心思写暴力233. 下面是几个很有用的性质: c0,1+1≥c1,0≥c0,1c_{0,1 }+1 ≥ c_{1,0} ≥ c_{0 ...
- 2018.10.12 bzoj4712: 洪水(树链剖分)
传送门 树链剖分好题. 考虑分开维护重儿子和轻儿子的信息. 令f[i]f[i]f[i]表示iii为根子树的最优值,h[i]h[i]h[i]表示iii重儿子的最优值,g[i]g[i]g[i]表示iii所 ...
- it's time to change myself now (2018.10.31)
自16年从新屋熊职校毕业,入职深圳某厂从事云存储两年半了.两年半的时间很快,快的感觉一生都会飞快,两年多一直很忙,忙的几乎忘了自己是否正向改变过. 正向改变,or 积极改变,今年十一回家,与几个好友小 ...
- Unity进阶----AssetBundle_02(加载依赖关系及网络资源)(2018/10/31)
网络资源加载: string path ="file://"+ Application.streamingAssetsPath + "\\windows\\123&quo ...
- noip 2018.10.14 模拟赛 砍树
数学问题... 根据题意,有: 移项,整理,得: 记 于是 那么 可以看到,最多只会有2*个取值(显而易见) 于是对应的,可能产生效果的d也只会有个,于是我们把他们找出来,扔进一个数组里然后排序,去重 ...
- 2018.10.31 NOIP训练 锻造(方程式期望入门题)(期望dp)
传送门 根据题目列出方程: fi=pi∗(fi−1+fi−2)+(1−pi)∗(fi+1+fi)f_i=p_i*(f_{i-1}+f_{i-2})+(1-p_i)*(f_{i+1}+f_i)fi=p ...
- 2018.10.31 bzoj4737: 组合数问题(lucas定理+容斥原理+数位dp)
传送门 这是一道让我重新认识lucaslucaslucas的题. 考虑到lucaslucaslucas定理: (nm)≡(n%pm%p)∗(npmp)\binom n m \equiv \binom ...
随机推荐
- Selenium 定位元素原理,基本API,显示等待,隐式等待,重试机制等等
Selenium 如何定位动态元素: 测试的时候会遇到元素每次变动的情况,例如: <div id="btn-attention_2030295">...</di ...
- Unity4.6证书激活问题
第一次运行的激活问题 安装好Unity4.6之后首次启动会自动连网,但是会出现error loading page错误,SSL peer certificate or SSH remote key w ...
- 从零开始写bootloader(2)
下图是设置内核启动参数的存放图示,由于bootloader启动内核时,需要给内核传输一些启动参数,但是由于当bootloader把内核 启动之后,程序就跳转到内核中执行了,再也不会回到bootload ...
- Python: Tkinter、ttk编程之计算器
起源: 研究Python UI编程,我偏喜欢其原生组件,于是学习Tkinter.ttk组件用法.找一计算器开源代码,略加修整,以为备忘.其界面如图所示: 1.源代码(Python 2.7): # en ...
- 用户管理系统之class
接着上一篇博客继续往下总结,上一篇博客的地址:https://www.cnblogs.com/bainianminguo/p/9189324.html 我们开始吧 这里我们就需要先看下我们设计的数据库 ...
- 随机数、方法重载和System.out.println()的理解
1.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机数. package testradom; public class testradom { public static void m ...
- cherry-pick 命令
拣选会提取某次提交的补丁,之后尝试将其重新应用到当前分支上. 这种方式在你只想引入特性分支中的某个提交时很有用. 假设你的项目提交历史如下: 如果你希望将提交 e43a6 拉取到 master 分支, ...
- sqlserver 2008 还原数据库时,提示有用户正在使用,无法取得使用占有权
sqlserver 2008 还原数据库时,提示有用户正在使用,无法取得使用占有权 这个时候,只需要把数据库分离出去,再附加,然后还原即可 分离数据库的时候能看到有几个数据连接
- svn conflict问题解决办法
转自:http://www.cnblogs.com/aaronLinux/p/5521844.html 目录: 1. 同一处修改文件冲突 1.1. 解决方式一 1.2. 解决方式二 1.3. 解决总结 ...
- Mac下配置域名和网站测试环境
一.在 /etc/hosts 下配置相关域名 1, control+space 打开spotlight, 搜索“terminal” 2, 打开Terminal 3, 在terminal界面中输入 ...