题目链接 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. javascript中的 return false和return true

    关于javascript中的 return false和return true,return 是javascript里函数返回值的关键字,一个函数内处理的结果可以使用return 返回,这样在调用函数 ...

  2. Vue 鼠标移入移出事件

    Vue 中鼠标移入移出事件 @mouseover和@mouseleave 然后绑定style   现在开始代码示例 <template> <div class="pc&qu ...

  3. flutter图片铺满父框

    正常我们需要显示一张图片,会用到Image这个控件. 打个比方,我们加载一张本地的图片, 先看一下这个Image.asset的源码: Image.asset(String name, { Key ke ...

  4. k8s HPA自动收缩

    HPA自动收缩 autoscale 自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController 的副本数量 #创建一个replicaset测试 [r ...

  5. Chrome 75 & lazy-loading

    Chrome 75 & lazy-loading https://addyosmani.com/blog/lazy-loading/ https://chromestatus.com/feat ...

  6. 莫烦theano学习自修第五天【定义神经层】

    1. 代码如下: #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ import numpy as np import theano.tensor as T ...

  7. 老男孩python学习自修第十一天【内置函数】

    1.基本内置函数 help() 帮助文档 dir() 列出当前文件的所有变量和方法 vars() 列出当前文件的所有变量及其值 type() 返回变量的类型 id() 返回变量的内存地址 len() ...

  8. 二、Docker部署应用

    一.有关Docker的安装请参考docker官网  Docker 提供了两个版本:社区版 (CE) 和企业版 (EE). Docker 社区版 (CE) 是开发人员和小型团队开始使用 Docker 并 ...

  9. 获取网络图片并显示在picturbox上,byte[]数组转换成Image:

    private void getWebPicture_Click(object sender, EventArgs e) { WebRequest request = WebRequest.Creat ...

  10. orcale三表连接查询

    SELECT w.ZDBH,w.HEATINGANDAIRCONDITIONERID,  w.ZDMC,  w.CZBH,  w.CZMC,  w.CNXS,  w.ND,  w.KTJF,  w.K ...