BZOJ_1901_Zju2112 Dynamic Rankings_树状数组+主席树
BZOJ_1901_Zju2112 Dynamic Rankings_树状数组+主席树
题意:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 100500
int t[N*40],ls[N*40],rs[N*40],n,m,root[N*40];
int sx[N],sy[N],v[N],maxn=1000000000,cnt,lx,ly;
char ch[10];
void insert(int x,int &y,int l,int r,int val,int c){
if(!y)y=++cnt;
if(l==r) { t[y] = t[x] + c; return ;}
int mid=l+r>>1;
if(val<=mid) rs[y]=rs[x],insert(ls[x],ls[y],l,mid,val,c);
else ls[y]=ls[x],insert(rs[x],rs[y],mid+1,r,val,c);
t[y] = t[ls[y]] + t[rs[y]];
}
int query(int l,int r,int k){
if(l==r)return l;
int sizls=0,mid=l+r>>1,i;
for(i=1;i<=ly;i++) sizls += t[ls[sy[i]]];
for(i=1;i<=lx;i++) sizls -= t[ls[sx[i]]];
if(k<=sizls){
for(i=1;i<=ly;i++) sy[i]=ls[sy[i]];
for(i=1;i<=lx;i++) sx[i]=ls[sx[i]];
return query(l,mid,k);
}else{
for(i=1;i<=ly;i++) sy[i]=rs[sy[i]];
for(i=1;i<=lx;i++) sx[i]=rs[sx[i]];
return query(mid+1,r,k-sizls);
}
}
int main(){
scanf("%d%d",&n,&m);
int i,x,y,z,tot=n,j,k;
for(i=1;i<=n;i++) { scanf("%d",&v[i]);for(j=i;j<=n;j+=j&(-j))insert(root[j],root[j],0,maxn,v[i],1); }
for(i=1;i<=m;i++) {
scanf("%s%d%d",ch,&x,&y);
if(ch[0]=='C'){
for(j=x;j<=n;j+=j&(-j)) insert(root[j],root[j],0,maxn,v[x],-1);
v[x]=y;
for(j=x;j<=n;j+=j&(-j)) insert(root[j],root[j],0,maxn,v[x],1);
}else{
scanf("%d",&z);
for(lx=0,j=x-1;j;j-=j&(-j)) sx[++lx] = root[j];
for(ly=0,j=y;j;j-=j&(-j)) sy[++ly] = root[j];
printf("%d\n",query(0,maxn,z));
}
}
}
BZOJ_1901_Zju2112 Dynamic Rankings_树状数组+主席树的更多相关文章
- zoj2112 树状数组+主席树 区间动第k大
Dynamic Rankings Time Limit: 10000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu Subm ...
- 【bzoj1146】[CTSC2008]网络管理Network 倍增LCA+dfs序+树状数组+主席树
题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条高 ...
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- BZOJ_2120_数颜色_Set+树状数组+主席树
BZOJ_2120_数颜色_Set+树状数组+主席树 Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L ...
- P1972 [SDOI2009]HH的项链[离线+树状数组/主席树/分块/模拟]
题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链 ...
- ZOJ 2112 Dynamic Rankings(树状数组+主席树)
The Company Dynamic Rankings has developed a new kind of computer that is no longer satisfied with t ...
- [luogu2617][bzoj1901][Zju2112]Dynamic Rankings【树套树+树状数组+主席树】
题目网址 [传送门] 题目大意 请你设计一个数据结构,支持单点修改,区间查询排名k. 感想(以下省略脏话inf个字) 真的强力吹爆洛谷数据,一般的树套树还给我T了一般的点,加强的待修主席树还给我卡了几 ...
- ZOJ 2112 Dynamic Rankings(树状数组+主席树)
题意 \(n\) 个数,\(m\) 个操作,每次操作修改某个数,或者询问某个区间的第 \(K\) 小值. \(1 \leq n \leq 50000\) \(1 \leq m \leq 10000\) ...
- bzoj 1901: Zju2112 Dynamic Rankings【整体二分+树状数组||主席树+树状数组】
整体二分: 对于每一个修改操作,标记为1,并且加一个标记为-1的这个位置原来值,并且对于a数列每个点都当成修改操作 然后整体二分,扫当前操作区间lr,把在值域区间标记为1和-1的操作都在树状数组对应位 ...
随机推荐
- C++:LIB和DLL的区别与使用
共有两种库: 一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library. 一种是LIB包含 ...
- 2017年最适用于WIFI HACK的无线网卡推荐
http://www.freebuf.com/articles/wireless/140065.html 相信很多初次使用Kali Linux来进行无线渗透的小伙伴都曾遇到过一个非常头疼的问题,就是不 ...
- classes目录中没有class文件的一个原因
可能是你的build设置有问题:比如本来有的jar被删除的情况下.build不会报错,但是classes目录下什么都没有.
- vi 常用命令使用說明
vi是一種文字模式全螢幕文字編輯軟體(Text Editor).對初學者來說,vi是個很難用的工具,一般需要2個星期的時間才能得心應手.之所以介紹vi,其理由如下: vi是Unix上的標準文字編輯軟體 ...
- Ext Js Sencha Cmd 命令 打包charts
先进入charts包的目录下 cd D:\开发文档API\ext--gpl\packages\charts 在执行打包命令 sencha package build
- lintcode 链表求和
题目要求 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例 给出两个链表 3- ...
- HTML学习笔记7:图片与超链接
①图片 <img/>标签,属性有: src,图片链接,分绝对路径和相对路径 width宽度 height,高度 ②超链接 <a> 内容描述 ...
- SSM博客 前端页面样式不显示
<!-- 由于在web.xml中定义的url拦截形式为“/”表示拦截所有的url请求, 包括静态资源例如css.js等.所以需要在springmvc.xml中添加资源映射标 --> < ...
- linux基础和vim基本使用
Liunx基础 1. 目录 /:根目录,一般根目录只存放目录,在linux下有且只有一个根目录.所有的东西都是从这里开始,例如:/home就是先从根目录/开始,再进入到home目录. /bin ...
- Fiddler证书安装(查看HTTPS)
现在很多带有比较重要信息的接口都使用了安全性更高的HTTPS,而Fiddler默认是抓取HTTP类型的接口,要想查看HTTPS类型接口就需要安装fiddler证书. fiddler安装教程可参考: ...