题目链接 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. Mac 在terminal 上用命令打开sublime

    Step1. 安装Sublime Text编辑器 可直接到以下网址下载dmg安装文件: Sublime Text 3 Step2. 添加命令行别名 打开用户配置文件 vim ~/.bash_profi ...

  2. [转帖]全国产 台式机/笔记本/服务器都有 方正龙芯3A3000整机三连发

    台式机/笔记本/服务器都有 方正龙芯3A3000整机三连发 2019年03月29日 17:17 4171 次阅读 稿源:快科技 7 条评论 https://www.cnbeta.com/article ...

  3. [转帖]cnblog 新闻 : 亚太云计算市场报告:腾讯位列前五 份额首超谷歌

    亚太云计算市场报告:腾讯位列前五 份额首超谷歌 投递人 itwriter 发布于 2019-03-18 12:06 评论(1) 有213人阅读 原文链接 [收藏] « » 美国市场研究机构 Syner ...

  4. zTree树形菜单交互选项卡效果实现

    1. 添加自定义属性 page 2. 为 ztree 每个树形节点,添加点击事件 <!DOCTYPE html> <html> <head> <meta ch ...

  5. groovy安装 ideal

    参考:https://blog.csdn.net/newbie_907486852/article/details/80879745 (1) 首先下载groovy: https://gradle.or ...

  6. 利用Python实现“指尖陀螺”,让你释放压力

    前言 利用Python实现“指尖陀螺”,让你释放压力 基本环境配置 版本:Python3 系统:Windows 相关模块:turtle 实现效果 不停点击键盘空格键,这个陀螺会慢慢加速,从而达到一个减 ...

  7. Gatsby & React & NPX & NVM

    Gatsby & React Gatsby is a blazing fast modern site generator for React. https://www.gatsbyjs.or ...

  8. SpringJdbc框架

    import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import JdbcUtils.Jdb ...

  9. WinForm中在非UI线程更改控件值的办法

    从非UI线程调用UI控件赋值.或进行其他更新UI的操作的话,会出现异常: System.InvalidOperationException:“线程间操作无效: 从不是创建控件“xxx”的线程访问它.” ...

  10. border-color的深入理解

    .className{ width:100px;height:100px; border:100px solid; border-color: red green blue orange; } 最终的 ...