HDU--5519 Sequence II (主席树)
题目链接 2016年长春ccpc I 题
题目大意 :
给你n(n≤2∗105n≤2∗105)个数,每个数的大小 0<Ai≤2∗10^5 0<Ai≤2∗10^5。
再给你m(m≤2∗105≤2∗105)个询问。对于每个询问输入l,r,表示Al...ArAl...Ar这个区间我们得到每个数第一次出现的位置下标的排列,
假设这个区间有k个不同的数,我们得到的排列是p1<p2<p3<...<pkp1<p2<p3<...<pk,叫你求第(k+1)/2这个数是所在的位置是哪个?
主席树正着插能得到每个区间不同数最后一次出现的位置,反着插的话可以得到每个不同数第一次出现的位置
然后就是查找区间k值
#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
struct ac{
int va,l,r;
}tre[*maxn];
int a[maxn],root[maxn],tot,fa[maxn];
void init(){
memset(root,,sizeof(root));
memset(tre,,sizeof(tre));
memset(fa,,sizeof(fa));
tot=;
}
void updata(int l,int r,int &x,int y,int z,int va){
tre[++tot]=tre[y];
tre[tot].va+=va;
x=tot;
if(l==r) return ;
;
if(z<=mid) updata(l,mid,tre[x].l,tre[y].l,z,va);
,r,tre[x].r,tre[y].r,z,va);
}
int query(int l,int r,int x,int k){
if(l==r) return l;
int s=tre[tre[x].l].va;
;
if(k<=s){
return query(l,mid,tre[x].l,k);
}
,r,tre[x].r,k-s);
}
int getsum(int l,int r,int x,int y,int z){
if(l==x&&y==r) return tre[z].va;
;
if(y<=mid){
return getsum(l,mid,x,y,tre[z].l);
}else if(x>mid){
,r,x,y,tre[z].r);
}else{
,r,mid+,y,tre[z].r);
}
}
int main(){
;
cin>>t;
while(t--){
init();
int n,m;
cin>>n>>m;
;j<=n;j++){
scanf("%d",&a[j]);
}
;j--){
if(fa[a[j]]){
updata(,n,root[j],root[j+],fa[a[j]],-);
updata(,n,root[j],root[j],j,);
}else{
updata(,n,root[j],root[j+],j,);
}
fa[a[j]]=j;
}
;
printf("Case #%d:",cnt++);
;j<m;j++){
int x,y,l,r;
scanf("%d%d",&x,&y);
x=(x+ans)%n+;
y=(y+ans)%n+;
l=min(x,y);r=max(x,y);
,n,l,r,root[l]);
s=(s+)/;
ans=query(,n,root[l],s);
printf(" %d",ans);
}
printf("\n");
}
}
HDU--5519 Sequence II (主席树)的更多相关文章
- HDU 5919 Sequence II 主席树
Sequence II Problem Description Mr. Frog has an integer sequence of length n, which can be denoted ...
- HDU5919 Sequence II(主席树)
Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2,⋯,ana1,a2,⋯,anThere are ...
- hdu 5147 Sequence II【树状数组/线段树】
Sequence IITime Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- HDU 5919 Sequence II(主席树+逆序思想)
Sequence II Time Limit: 9000/4500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) To ...
- HDU 5919 -- Sequence II (主席树)
题意: 给一串数字,每个数字的位置是这个数第一次出现的位置. 每个询问对于序列的一个子区间,设一共有k个不同的数,求第ceil(k/2)个数的位置. 因为强制在线,所以离线乱搞pass掉. 主席树可解 ...
- HDU 5919 - Sequence II (2016CCPC长春) 主席树 (区间第K小+区间不同值个数)
HDU 5919 题意: 动态处理一个序列的区间问题,对于一个给定序列,每次输入区间的左端点和右端点,输出这个区间中:每个数字第一次出现的位子留下, 输出这些位子中最中间的那个,就是(len+1)/2 ...
- HDU 5919 Sequence II(主席树)题解
题意:有A1 ~ An组成的数组,给你l r,L = min((l + ans[i - 1]) % n + 1, (r + ans[i - 1]) % n + 1),R = max((l + ans[ ...
- hdu 5919 Sequence II (可持久化线段树)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5919 大致题意: 给你一个长度为n的序列,q个询问,每次询问是给你两个数x,y,经过与上一次的答案进行运算 ...
- hdu 5147 Sequence II 树状数组
Sequence II Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Prob ...
- hdu 5147 Sequence II (树状数组 求逆序数)
题目链接 Sequence II Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
随机推荐
- 把composer的源切换为 国际的源
把composer的源切换为 国际的源:composer config -g repo.packagist composer https://packagist.org
- [转帖]linux下的CPU、内存、IO、网络的压力测试
linux下的CPU.内存.IO.网络的压力测试 https://www.cnblogs.com/zhuochong/p/10185881.html 一.对CPU进行简单测试: 1.通过bc命令计算特 ...
- Effective C++目录
条款1:视C++为一个语言联邦 条款2:尽量以const.enum.inline替换#define 条款3:尽可能使用const 条款4:确定对象使用前已先被初始化 条款5:了解C++默认编写并调用哪 ...
- HDU 4913 Least common multiple
题目:Least common multiple 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4913 题意:有一个集合s,包含x1,x2,...,xn, ...
- js中获取当前项目名等
实际上通过window.location可以获取很多跟资源路径相关的信息,需要用到的时候直接通过浏览器调试可以查看window.location的一些属性
- Android——MaterialDesign之一Toolbar
Toolbar 由于ActionBar设计原因只能存在活动的顶部,从而不能实现MaterialDesign的效果,现在推荐使用Toolbar,继承Actionbar,但是比起它更加的灵活. 设置主题: ...
- Delphi (Library Path Browsing Path)
首先要明白的一个概念是dcu文件 *.dcu是*.pas的编译后单元文件(Delphi Compiled Unit), 编译器把它和库文件连接起来就构成了可执行文件*.exe 或*.dll等,相当于C ...
- delphi 子窗体只能最小化不能关闭的解决方案
cnpack下载地址:http://www.cnpack.org/showdetail.php?id=726&lang=zh-cn 时候创建的子窗体不能关闭,点关闭按钮时子窗体最小化了. 出现 ...
- 在文件保存中 os.getcwd() os.listdir() os.makedirs() os.mkdir() xx.join() ... 等函数 的使用介绍
path = 'C:\\Users\\zhangjunming\\Desktop\\PycharmProjects\\my_mgm' 1.xx.join(obj) 以xx为分隔符 对obj中的元素 ...
- ERROR org.hibernate.internal.SessionImpl - HHH000346: Error during managed flush [object references an unsaved transient instance - save the transient instance before flushing: cn.itcast.domain.Custom
本片博文整理关于Hibernate中级联策略cascade和它导致的异常: Exception in thread "main" org.hibernate.TransientOb ...