题目链接 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. [转帖]KMS 是什么 以及 优缺点

    产品激活 比如Windows激活 , office激活 等激活的原理是什么? KMS等激活工具安全吗? http://www.cnblogs.com/flowerslip/p/8370832.html ...

  2. [转帖]SSH 的 三种代理功能.

    https://www.zhihu.com/people/skywind3000/activities 之前用过frp 知道 ssh 有一 反向代理的功能 没想到 还有这么多高级功能 收藏一下. ss ...

  3. 工程下CmakeLists.txt

    2.工程下Cmake 本小节的任务是让上一小结的程序更像一个工程: 为工程添加一个子目录 src,用来放置工程源代码 : 添加一个子目录doc,用来放置这个工程的文档 hello.txt: 在工程目录 ...

  4. Day3-2 函数之递归

    递归 定义:一个函数在 内部调用自己,就称为递归. # 如何让10不停的除以2,直到不能除为止. n = 10 while True: n = int(n /2) print(n) if n == 0 ...

  5. fastclick的介绍和使用

    移动端点击延迟事件 1. 移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟 2. 原因: 移动端的双击会缩放导致click判断延迟 解决方式 1. 禁用缩放 `<meta nam ...

  6. Netcat实用操作

    写久了web倦了,第n次开始尝试网络开发,于是熟悉一下常用工具. 尝试了一下netcat来测试服务器,或者充当客户端都异常好用.于是记录一下常用的一下命令 1. 充当服务器,或者客户端进行访问 通过n ...

  7. shell命令相关

    1.服务端登录退出 登录服务器 ssh kayan.sjc@xx.xx.xx.67 退出登录:logout 192.168.0.10 2.目录管理 显示目录 pwd 创建目录 mkdir resour ...

  8. 动态sql and在前 逗号在后

  9. Sass(1)--- 了解Sass的发展

    1, Sass 其实是一门编程语言,用来书写css, 它对变量的声明,注释等作出了一系列的规定. 其实Sass写出的文件为SCSS, 它还需要编译成真正的css,供浏览器使用. 2, Sass 的编译 ...

  10. codeforces605A

    Sorting Railway Cars CodeForces - 605A 一辆列车有N节车厢,编号为1...N(每节车厢编号都不同),并且他们的排列是混乱的.李老湿想要把这N节车厢重新排列为升序排 ...