题目链接 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 (主席树)的更多相关文章

  1. HDU 5919 Sequence II 主席树

    Sequence II Problem Description   Mr. Frog has an integer sequence of length n, which can be denoted ...

  2. HDU5919 Sequence II(主席树)

    Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2,⋯,ana1,a2,⋯,anThere are ...

  3. hdu 5147 Sequence II【树状数组/线段树】

    Sequence IITime Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...

  4. HDU 5919 Sequence II(主席树+逆序思想)

    Sequence II Time Limit: 9000/4500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) To ...

  5. HDU 5919 -- Sequence II (主席树)

    题意: 给一串数字,每个数字的位置是这个数第一次出现的位置. 每个询问对于序列的一个子区间,设一共有k个不同的数,求第ceil(k/2)个数的位置. 因为强制在线,所以离线乱搞pass掉. 主席树可解 ...

  6. HDU 5919 - Sequence II (2016CCPC长春) 主席树 (区间第K小+区间不同值个数)

    HDU 5919 题意: 动态处理一个序列的区间问题,对于一个给定序列,每次输入区间的左端点和右端点,输出这个区间中:每个数字第一次出现的位子留下, 输出这些位子中最中间的那个,就是(len+1)/2 ...

  7. 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[ ...

  8. hdu 5919 Sequence II (可持久化线段树)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5919 大致题意: 给你一个长度为n的序列,q个询问,每次询问是给你两个数x,y,经过与上一次的答案进行运算 ...

  9. hdu 5147 Sequence II 树状数组

    Sequence II Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Prob ...

  10. hdu 5147 Sequence II (树状数组 求逆序数)

    题目链接 Sequence II Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

随机推荐

  1. 把composer的源切换为 国际的源

      把composer的源切换为 国际的源:composer config -g repo.packagist composer https://packagist.org

  2. [转帖]linux下的CPU、内存、IO、网络的压力测试

    linux下的CPU.内存.IO.网络的压力测试 https://www.cnblogs.com/zhuochong/p/10185881.html 一.对CPU进行简单测试: 1.通过bc命令计算特 ...

  3. Effective C++目录

    条款1:视C++为一个语言联邦 条款2:尽量以const.enum.inline替换#define 条款3:尽可能使用const 条款4:确定对象使用前已先被初始化 条款5:了解C++默认编写并调用哪 ...

  4. HDU 4913 Least common multiple

    题目:Least common multiple 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4913 题意:有一个集合s,包含x1,x2,...,xn, ...

  5. js中获取当前项目名等

    实际上通过window.location可以获取很多跟资源路径相关的信息,需要用到的时候直接通过浏览器调试可以查看window.location的一些属性

  6. Android——MaterialDesign之一Toolbar

    Toolbar 由于ActionBar设计原因只能存在活动的顶部,从而不能实现MaterialDesign的效果,现在推荐使用Toolbar,继承Actionbar,但是比起它更加的灵活. 设置主题: ...

  7. Delphi (Library Path Browsing Path)

    首先要明白的一个概念是dcu文件 *.dcu是*.pas的编译后单元文件(Delphi Compiled Unit), 编译器把它和库文件连接起来就构成了可执行文件*.exe 或*.dll等,相当于C ...

  8. delphi 子窗体只能最小化不能关闭的解决方案

    cnpack下载地址:http://www.cnpack.org/showdetail.php?id=726&lang=zh-cn 时候创建的子窗体不能关闭,点关闭按钮时子窗体最小化了. 出现 ...

  9. 在文件保存中 os.getcwd() os.listdir() os.makedirs() os.mkdir() xx.join() ... 等函数 的使用介绍

    path = 'C:\\Users\\zhangjunming\\Desktop\\PycharmProjects\\my_mgm' 1.xx.join(obj)   以xx为分隔符 对obj中的元素 ...

  10. 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 ...