P2617 Dynamic Rankings
带修改主席树
能进行对序列中数进行修改

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<stack>
#include<map>
using namespace std;
#define ll long long
const int mx=2e5+7;
int m,n,a[mx],b[mx];
struct ZXtree{int rt[mx],lc[mx<<9],rc[mx<<9],sz[mx<<9]; rt根节点,sz 序列中某个数的个数int node_sz,lnum[mx],rnum[mx],lsz,rsz;void init(){node_sz=0;lsz=rsz=0;}void add(int &o,int l,int r,int k,int num){if(!o) o=++node_sz;sz[o]+=num;if(l==r) return;int mid=(l+r)>>1;if(k<=mid) add(lc[o],l,mid,k,num);else add(rc[o],mid+1,r,k,num);}void update(int x,int len,int cn){int k=lower_bound(b+1,b+len+1,a[x])-b;while(x<=n){add(rt[x],1,len,k,cn);x+=x&(-x);}}int query(int l,int r,int kth){if(l==r) return l;int sum=0;for(int i=1;i<=rsz;i++) sum+=sz[lc[rnum[i]]];for(int i=1;i<=lsz;i++) sum-=sz[lc[lnum[i]]];int mid=(l+r)>>1;if(kth<=sum){for(int i=1;i<=rsz;i++) rnum[i]=lc[rnum[i]];for(int i=1;i<=lsz;i++) lnum[i]=lc[lnum[i]];return query(l,mid,kth);}else{for(int i=1;i<=rsz;i++) rnum[i]=rc[rnum[i]];for(int i=1;i<=lsz;i++) lnum[i]=rc[lnum[i]];return query(mid+1,r,kth-sum);}}
}zxt;
struct node{char c;int l,r;int k;
}ts[mx];int main()
{int cnt=0;cin>>n>>m;for(int i=1;i<=n;i++){scanf("%d",&a[i]);b[i]=a[i];}cnt=n;for(int i=1;i<=m;i++){scanf(" %c%d%d",&ts[i].c,&ts[i].l,&ts[i].r);if(ts[i].c=='Q') scanf("%d",&ts[i].k);else b[++cnt]=ts[i].r;}sort(b+1,b+cnt+1);cnt=unique(b+1,b+cnt+1)-b-1;zxt.init();for(int i=1;i<=n;i++) zxt.update(i,cnt,1);for(int i=1;i<=m;i++){if(ts[i].c=='C'){zxt.update(ts[i].l,cnt,-1);a[ts[i].l]=ts[i].r;zxt.update(ts[i].l,cnt,1);}else{zxt.lsz=zxt.rsz=0;for(int j=ts[i].l-1;j>0;j-=j&(-j)) zxt.lnum[++zxt.lsz]=zxt.rt[j];for(int j=ts[i].r;j>0;j-=j&(-j)) zxt.rnum[++zxt.rsz]=zxt.rt[j];printf("%d\n",b[zxt.query(1,cnt,ts[i].k)]);}}return 0;
}

P2617 Dynamic Rankings(带修改主席树)相关推荐

  1. [学习笔记]带修改主席树

    1.Dynamic Rankings 区间带修改的第 \(k\) 大需要用带修改主席树. 如果用平常的主席树的效率是多少呢? 查询 \(O(logn)\),暴力修改 \(O(nlogn)\),时间不支 ...

  2. zoj - 2112 带修改主席树 + 空间优化

    ZOJ - 2112 题意:求区间第k小 思路:带修改区间第k小裸题,无修改的主席树是维护一个前缀线段树,每次更新log个节点,用root 和 ls rs作为每颗前缀线段树的根节点和左右子树的索引(相 ...

  3. Dynamic Rankings——带修改区间第k大

    三种做法: 1.整体二分: 二分mid 考虑小于mid的修改的影响 但是大于mid的修改可能会干掉小于mid的一些值 所以额外把一个修改变成一个值的删除和一个值的添加 这样就相互独立了! 整体二分,树 ...

  4. P2617 Dynamic Rankings(主席树+树状数组)

    怕是还没有题解,所以先写一篇. 这题就是维护带修改的主席树.首先树套树肯定是能做的,既然树套树能做那么整体二分肯定也是可以的. 由于我并没有使用这两种做法,所以此处不予介绍. 大概描述下主席树的思路: ...

  5. P2617 Dynamic Rankings(带修主席树)

    所谓带修主席树,就是用树状数组的方法维护主席树的前缀和 思路 带修主席树的板子 注意数据范围显然要离散化即可 代码 #include <cstdio> #include <cstri ...

  6. 洛谷 - P2617 Dynamic Rankings(树状数组套主席树)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a,再给出 m 次操作: Q l r k:返回区间 [ l , r ] 内第 k 大的数 C x y:令 a[ x ] = y 题目分析:其实 ...

  7. P2617 Dynamic Rankings(整体二分)

    P2617 Dynamic Rankings 题意: 待修改的区间最值问题 题解: 整体二分天然带有修改性 整体二分做不带修改的区间最值->看这里 现在待修改,我们可以将第l位修改为x,因为我们 ...

  8. 洛谷P2617 Dynamic Rankings

    带修主席树模板题 主席树的单点修改就是把前缀和(大概)的形式改成用树状数组维护,每个树状数组的元素都套了一个主席树(相当于每个数组的元素root[i]都是主席树,且这个主席树维护了(i - lowbi ...

  9. 2019年ACM-ICPC - 南昌网络赛I:Yukino With Subinterval【带修主席树】

    题目: 2019ICPC南昌网络赛I:Yukino With Subinterval 题意: 给定长度为 N 的数组,有两种操作:(1)单点修改,(2)查询区间[qL,qR]内有多少个不同的段(连续相 ...

最新文章

  1. 基于matlab的退化图像复原(三)------维纳滤波复原
  2. 项目需求 | PC VR头戴显示器实时三维坐标(项目经费20万)
  3. vs2017中报无法打开包括文件: corecrt.h: No such file or directory
  4. 为什么浮点型运算结果会有误差?
  5. Test2 unit4
  6. OpenCV基础篇之读取显示图片
  7. hibernate session的load和get方法
  8. 将PDF和Gutenberg文档格式转换为文本:生产中的自然语言处理
  9. 李洋疯狂C语言之编程实现统计某年某月份的天数
  10. 如何解决Win10预览版一闪而过的disksnapshot.exe进程?
  11. obs多推流地址_什么都比不上动手能力,OBS 推流实践小记
  12. 【渝粤教育】国家开放大学2018年秋季 0221-22T数字电子电路 参考试题
  13. 【bzoj3514】Codechef MARCH14 GERALD07加强版
  14. Linux内核相关常见面试题
  15. 通达信波段王指标公式主图_通达信波段操作主图指标公式
  16. 增量式解析大型XML文件
  17. cv::Mat::step step1 elemSize elemSize1介绍
  18. xiaoxin juju needs help
  19. 如何准备银行秋招春招?
  20. repo init 下载代码error.GitError: manifests ls-remote: usage: git ls-remote

热门文章

  1. 科学计算机怎么解一元一次方程,解一元一次方程“八不要”
  2. STM32—串口通讯详解
  3. mac 重置mysql root密码_MAC 重置MySQL root 密码
  4. uboot 1.1.6 移植8900网卡+tftp
  5. 网页内嵌lodop控件,部分电脑一直提示未安装
  6. 又到年底冲刺时,华为小米竞相降价促销
  7. IPUS SQPI PSRAM为STM32单片机提供RAM扩展方案
  8. 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场(图像处理)
  9. DZY Loves Math 系列详细题解
  10. Win10系统磁盘扩展分区与恢复分区