[BZOJ 4923][Lydsy1706月赛]K小值查询
势能分析平衡树,splay或treap都可以
放个指针版的就跑
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;++i)
;
template <class T> inline bool check_Max(T &x, const T&y) { return x<y?x=y,false:true;}
template <class T> inline bool check_Min(T &x, const T&y) { return x>y?x=y,false:true;}
inline int gi() {
; char o; bool f=true; for(;!isdigit(o=getchar());) if(o=='-') f=false;
)+(x<<)+(o&); ;
}
struct node {int v,ky,sz,lz; node *ls,*rs;}*rt,*nul,pool[maxn],*pis=pool;
inline ; rt=nul;}
node *newnode(; k->sz=; return k;}
inline void add(node *&x,int vl) { x->v+=vl; x->lz+=vl; return ;}
inline void pd(node *&x) {
;
}
inline ; }
inline void mrg(node *&c,node *x,node *y) {
if(x==nul||y==nul) {c=x==nul?y:x; return;}
pd(x); pd(y);
if(x->ky < y->ky) c=x,mrg(c->rs,x->rs,y);
else c=y,mrg(c->ls,x,y->ls); up(c);
}
inline void spl(node *c,node *&x,node *&y,int rk) {
if(c==nul) { x=y=nul; return;}
pd(c);
if(c->v <= rk) x=c,spl(c->rs,x->rs,y,rk);
else y=c,spl(c->ls,x,y->ls,rk); up(c);
}
inline void insert(int vl) {
node *x,*y; spl(rt,x,y,vl);
mrg(x,x,newnode(vl)); mrg(rt,x,y);
}
int find(node *&x,int rk) {
==rk) return x->v;
pd(x);
if(rk<=x->ls->sz) return find(x->ls,rk);
);
}
inline void rec(node *&now,node *&x,int vl) {
if(x==nul) return; pd(x); rec(now,x->ls,vl); rec(now,x->rs,vl);
x->ls=x->rs=nul; x->sz=; x->v-=vl;
node *x1,*y1; spl(now,x1,y1,x->v); mrg(x1,x1,x); mrg(now,x1,y1);
}
inline void cg(int k) {
node *x,*y,*z; spl(rt,x,y,k); spl(y,y,z,k<<);
add(z,-k); rec(x,y,k); mrg(rt,x,z);
}
int n,m;
int main() {
#ifndef ONLINE_JUDGE
freopen("3.in","r",stdin);
freopen("a.out","w",stdout);
#endif
n=gi();m=gi();
init();
rep(i,,n) insert(gi());
rep(i,,m) {
int opt=gi(),K=gi();
) printf("%d\n",find(rt,K));
else cg(K);
}
;
}

[BZOJ 4923][Lydsy1706月赛]K小值查询的更多相关文章
- BZOJ 4923: [Lydsy1706月赛]K小值查询 Splay + 思维
Description 维护一个长度为n的正整数序列a_1,a_2,...,a_n,支持以下两种操作: 1 k,将序列a从小到大排序,输出a_k的值. 2 k,将所有严格大于k的数a_i减去k. In ...
- 4923: [Lydsy1706月赛]K小值查询 平衡树 非旋转Treap
国际惯例的题面:这种维护排序序列,严格大于的进行操作的题都很套路......我们按照[0,k],(k,2k],(2k,inf)分类讨论一下就好.显然第一个区间的不会变化,第二个区间的会被平移进第一个区 ...
- [BZ4923][Lydsy1706月赛]K小值查询
K小值查询 题面 维护一个长度为n的正整数序列a_1,a_2,...,a_n,支持以下两种操作: 1 k,将序列a从小到大排序,输出a_k的值. 2 k,将所有严格大于k的数a_i减去k. Input ...
- BZOJ4923:[Lydsy1706月赛]K小值查询(Splay)
Description 维护一个长度为n的正整数序列a_1,a_2,...,a_n,支持以下两种操作: 1 k,将序列a从小到大排序,输出a_k的值. 2 k,将所有严格大于k的数a_i减去k. In ...
- BZOJ4923 [Lydsy1706月赛]K小值查询
题意 维护一个长度为n的正整数序列a_1,a_2,...,a_n,支持以下两种操作: 1 k,将序列a从小到大排序,输出a_k的值. 2 k,将所有严格大于k的数a_i减去k. \(n \leq 10 ...
- [bzoj4923]K小值查询
来自FallDream的博客,未经允许,请勿转载,谢谢. 维护一个长度为n的正整数序列a_1,a_2,...,a_n,支持以下两种操作: 1 k,将序列a从小到大排序,输出a_k的值. 2 k,将所有 ...
- BZOJ4923 K小值查询(splay)
容易想到建一棵平衡树,修改时打上标记即可.但是修改会导致平衡树结构被破坏.注意到实际上只有[k+1,2k)这一部分数在平衡树中的位置会被改变,所以对这一部分暴力修改,因为每次都会使其至少减小一半,复杂 ...
- 【BZOJ】3065: 带插入区间K小值
http://www.lydsy.com/JudgeOnline/problem.php?id=3065 题意:带插入.修改的区间k小值在线查询.(原序列n<=35000, 询问<=175 ...
- bzoj 3065: 带插入区间K小值 替罪羊树 && AC300
3065: 带插入区间K小值 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 1062 Solved: 253[Submit][Status] Des ...
随机推荐
- python子进程模块subprocess详解与应用实例 之二
1.2. Popen 对象 Popen类的实例有下列方法: 1. Popen.poll() 检查子进程是否已经结束,设置并返回返回码值. 2. Popen.wait() 等待子进程结束,设置并返回返回 ...
- JS事件冒泡和事件捕获的详解
在学校,听老师讲解事件冒泡和事件捕获机制的时候跟听天书一样,只依稀记得IE使用的是事件冒泡,其他浏览器则是事件捕获.当时的我,把它当成IE浏览器兼容问题,所以没有深究(IE8以下版本的浏览器已基本退出 ...
- mysql 错误总结 和FROM_UNIXTIME用法
今天再倒入给数据库导入 .sql 文件的时候出现了一个错误.看错误码: You have an error in your SQL syntax; check the manual that cor ...
- mongo_2 $in 和 $all 区别
in 只需满足( )内的某一个值即可, 而$all 必须满足[ ]内的所有值, > db.table1.find({}); { "_id" : ObjectId(" ...
- 面试题:bootstrap栅格系统
Bootstrap是一个支持响应式的Css框架它提供了很多组件,如导航条,面板,菜单,form表单,还有栅格,而且他们这些都是支持响应式的,可以在各种设备上进行完美的展现.这里面我感觉最有价值的就是b ...
- 在Ubuntu安装Tomcat7.0及开机自动运行
在Ubuntu安装Tomcat7.0及开机自动运行 1.安装装Tomcat7.0 一般都是绿色版的,下载一个tomcat7.0解开到指定的目录上即可 然后进入tomcat目录的bin文件夹,执行 su ...
- 数字图像处理实验(13):PROJECT 05-04,Parametric Wiener Filter 标签: 图像处理MATLAB 2017-05-27 10:59
实验要求: Objective: To understand the high performance of the parametric Wiener Filter in image restora ...
- R语言的并行运算(CPU多核)
通常R语言运行都是在CPU单个核上的单线程程序.有时我们会有需求对一个向量里的元素应用相同的函数,最终再将结果合并,并行计算可以大幅节约时间. 为了支持R的并行运算, parallel包已经被纳入了R ...
- laravel查询最后执行的一条sql语句
- django获取字段列表(values/values_list/flat)
django获取字段列表(values/values_list/flat) values方法可以获取number字段的字典列表 values_list可以获取number的元组列表 values_li ...