zoj2112
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2112
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<fstream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<utility>
#include<set>
#include<bitset>
#include<vector>
#include<functional>
#include<deque>
#include<cctype>
#include<climits>
#include<complex>
//#include<bits/stdc++.h>适用于CF,UOJ,但不适用于poj using namespace std; typedef long long LL;
typedef double DB;
typedef pair<int,int> PII;
typedef complex<DB> CP; #define mmst(a,v) memset(a,v,sizeof(a))
#define mmcy(a,b) memcpy(a,b,sizeof(a))
#define re(i,a,b) for(i=a;i<=b;i++)
#define red(i,a,b) for(i=a;i>=b;i--)
#define fi first
#define se second
#define m_p(a,b) make_pair(a,b)
#define SF scanf
#define PF printf
#define two(k) (1<<(k)) template<class T>inline T sqr(T x){return x*x;}
template<class T>inline void upmin(T &t,T tmp){if(t>tmp)t=tmp;}
template<class T>inline void upmax(T &t,T tmp){if(t<tmp)t=tmp;} const DB EPS=1e-;
inline int sgn(DB x){if(abs(x)<EPS)return ;return(x>)?:-;}
const DB Pi=acos(-1.0); inline int gint()
{
int res=;bool neg=;char z;
for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());
if(z==EOF)return ;
if(z=='-'){neg=;z=getchar();}
for(;z!=EOF && isdigit(z);res=res*+z-'',z=getchar());
return (neg)?-res:res;
}
inline LL gll()
{
LL res=;bool neg=;char z;
for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());
if(z==EOF)return ;
if(z=='-'){neg=;z=getchar();}
for(;z!=EOF && isdigit(z);res=res*+z-'',z=getchar());
return (neg)?-res:res;
} const int maxN=;
const int maxM=;
const int maxcnt=maxN+maxM; int N,M;
int a[maxN+];
struct Tdata
{
char type;
int l,r,k,t;
inline void input()
{
type=getchar();while(!(type=='C' || type=='Q'))type=getchar();
if(type=='Q'){l=gint();r=gint();k=gint();}else{l=gint();t=gint();}
}
}data[maxM+]; int bak[maxcnt+],cnt; struct Tnode{int son[],val;}sn[maxcnt*+];int idx;
int tree[maxN+]; inline int newnode(){++idx;sn[idx].son[]=sn[idx].son[]=sn[idx].val=;return idx;}
inline void update(int p,int l,int r,int x,int val)
{
while()
{
sn[p].val+=val;
if(l==r)break;
int mid=(l+r)/;
int f=(x>mid);
if(!sn[p].son[f])sn[p].son[f]=newnode();
if(x<=mid){p=sn[p].son[];r=mid;}else{p=sn[p].son[];l=mid+;}
}
} #define lowbit(a) (a&(-a))
inline void change(int a,int x,int val)
{
for(;a<=N;a+=lowbit(a))
update(tree[a],,cnt,x,val);
} int lge,larr[maxN+],rge,rarr[maxN+];
inline int ask(int l,int r,int k)
{
int i;
l--;
lge=;
for(;l>=;l-=lowbit(l))larr[++lge]=tree[l];
rge=;
for(;r>=;r-=lowbit(r))rarr[++rge]=tree[r];
int x=,y=cnt;
while()
{
if(x==y)return bak[x];
int mid=(x+y)/,G=;
re(i,,rge)G+=sn[sn[rarr[i]].son[]].val;
re(i,,lge)G-=sn[sn[larr[i]].son[]].val;
if(G<k)
{
k-=G;
x=mid+;
re(i,,rge)rarr[i]=sn[rarr[i]].son[];
re(i,,lge)larr[i]=sn[larr[i]].son[];
}
else
{
y=mid;
re(i,,rge)rarr[i]=sn[rarr[i]].son[];
re(i,,lge)larr[i]=sn[larr[i]].son[];
}
}
} int main()
{
freopen("zoj2112.in","r",stdin);
freopen("zoj2112.out","w",stdout);
int i;
for(int Case=gint();Case;Case--)
{
N=gint();M=gint();
re(i,,N)a[i]=gint();
re(i,,M)data[i].input();
cnt=;
re(i,,N)bak[++cnt]=a[i];
re(i,,M)if(data[i].type=='C')bak[++cnt]=data[i].t;
sort(bak+,bak+cnt+);
cnt=unique(bak+,bak+cnt+)-bak-;
re(i,,N)a[i]=lower_bound(bak+,bak+cnt+,a[i])-bak;
re(i,,M)if(data[i].type=='C')data[i].t=lower_bound(bak+,bak+cnt+,data[i].t)-bak;
idx=;
re(i,,N)tree[i]=newnode();
re(i,,N)change(i,a[i],);
re(i,,M)
{
int x;
switch(data[i].type)
{
case 'C':
x=data[i].l;
change(x,a[x],-);
a[x]=data[i].t;
change(x,a[x],);
break;
case 'Q':
printf("%d\n",ask(data[i].l,data[i].r,data[i].k));
break;
}
}
}
return ;
}
zoj2112的更多相关文章
- zoj2112 树状数组+主席树 区间动第k大
Dynamic Rankings Time Limit: 10000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu Subm ...
- bzoj1901&zoj2112&cogs257 Dynamic Rankings(动态排名系统)
bzoj1901&zoj2112&cogs257 Dynamic Rankings(动态排名系统) cogs zoj bzoj-权限 题解 bzoj和zoj都是骗访问量的233,我没有 ...
- ZOJ2112 Dynamic Rankings(整体二分)
今天学习了一个奇技淫巧--整体二分.关于整体二分的一些理论性的东西,可以参见XRH的<浅谈数据结构题的几个非经典解法>.然后下面是一些个人的心得体会吧,写下来希望加深一下自己的理解,或者如 ...
- zoj2112 主席树动态第k大 (主席树&&树状数组)
Dynamic Rankings Time Limit: 10 Seconds Memory Limit: 32768 KB The Company Dynamic Rankings has ...
- BZOJ1901 ZOJ2112 线段树+treap (线段树套线段树)
BZOJ1901: 线段树套线段树做法: (外层线段树 里层动态开节点的权值线段树) 有一个小小的trick 可以省掉二分变成nlog^2n的 就是把查询的区间都取出来- logn个一起走- 2016 ...
- [bzoj1901][zoj2112][Dynamic Rankings] (整体二分+树状数组 or 动态开点线段树 or 主席树)
Dynamic Rankings Time Limit: 10 Seconds Memory Limit: 32768 KB The Company Dynamic Rankings has ...
- [主席树]ZOJ2112 && BZOJ1901 Dynamic Rankings
题意:n个数,q个询问 (n<=50000, q<=10000) Q x y z 代表询问[x, y]区间里的第z小的数 C x y 代表将(从左往右数)第x个数变成y 上篇介绍了在 ...
- ZOJ2112 Dynamic Rankings 动态区间第K最值 平方分割
有了上一题的经验(POJ的静态区间第K最值)再解决这道题就轻松多了 空间5256KB,时间3330ms,如果把动态开点的平衡树换成数组模拟的话应该会更快 之所以选择了平方分割而不是树套树,不仅是所谓趁 ...
- 【ZOJ2112】【整体二分+树状数组】带修改区间第k大
The Company Dynamic Rankings has developed a new kind of computer that is no longer satisfied with t ...
随机推荐
- velocity自定义动画
话说好久没有写博客了,零星的整理了一些东西,没有形成系统,所以也没有在这里记录. 废话不多说了,进入今天的正题.不知道大家是否记得之前写过的一篇文章<制作炫酷的专题页面& ...
- Oracle_Q&A_04
2014-12-19作业 [JSU]LJDragon's Oracle course tasks In the first semester, junior year --1.在管理员权限下创建一个新 ...
- apue
#ifndef apue_h #define apue_h #define _POSIX_C_SOURCE 200809L #if defined(SOLARIS) /* Solaris 10 */ ...
- java Date获取 年月日时分秒
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- 3D空间包围球(Bounding Sphere)的求法
引言 在3D碰撞检測中,为了加快碰撞检測的效率,降低不必要的碰撞检測,会使用基本几何体作为物体的包围体(Bounding Volume, BV)进行測试.基本包围体的碰撞检測相对来说廉价也easy的多 ...
- Android的Recovery中font_10x10.h字库文件制作
任务是要汉化Android中的Recovery,就了解了bootable/recovery/minui/font_10x18.h这个英文字库的来历,最终汉化的时候并没有自己汉字字库,用的github上 ...
- c++大作业--学籍管理系统--
1.题目描写叙述 学籍管理系统: 依据信息管理系统的业务流程.要求以及所要实现的目标,完毕下面功能: (1)建立学生档案的管理和维护.实现计算机自己主动化管理体制. (2)建立学生成绩管理机制,在计算 ...
- UI Prototype Design IDE( 界面原型设计工具 )
UI Prototype Design IDE( 界面原型设计工具 ) 如何用工具去与客户进行交流,互动,定义要做的系统,什么什么的... 0.Balsamiq Mockups http://ww ...
- jquery之onchange事件2
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 重学《C#高级编程》(序)
小生码农一枚,以前只是看别人写博客,从来没有想过要自己写博文,突然之间“脑抽”想自己也写点什么,遂在博客园开通这个博客. 简单介绍下自己吧,本人90后,父母对我没有大的想法,只是希望我平安成长,多学习 ...