博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1486 [NOI2004]郁闷的出纳员
阅读量:6463 次
发布时间:2019-06-23

本文共 2156 字,大约阅读时间需要 7 分钟。

思路

平衡树的题目

题目中的全部减少可以通过维护全局的减少量S(不过我使用了打tag的方式),然后每次插入的时候插入\(v_i-S\),删除的时候直接在平衡树上二分移除对应的子树即可

代码

#include 
#include
#include
#include
using namespace std;int Nodecnt=0,root,n,lim;struct Node{ int lson,rson,sz,val,ran,add,times;}Treap[100100*2];queue
q;void throwin(int x){ q.push(x);}int getnew(int val){ int o; if(q.size()) o=q.front(),q.pop(); else o=++Nodecnt; Treap[o].lson=Treap[o].rson=0; Treap[o].sz=Treap[o].times=1; Treap[o].ran=rand(); Treap[o].val=val; Treap[o].add=0; return o;}void pushup(int o){ Treap[o].sz=Treap[Treap[o].lson].sz+Treap[Treap[o].rson].sz+Treap[o].times;}void pushdown(int o){ if(Treap[o].add){ Treap[Treap[o].lson].val+=Treap[o].add; Treap[Treap[o].rson].val+=Treap[o].add; Treap[Treap[o].lson].add+=Treap[o].add; Treap[Treap[o].rson].add+=Treap[o].add; Treap[o].add=0; }}void rorateL(int &o){ int x=Treap[o].rson; pushdown(o); pushdown(x); Treap[o].rson=Treap[x].lson; Treap[x].lson=o; pushup(o); pushup(x); o=x;}void rorateR(int &o){ int x=Treap[o].lson; pushdown(o); pushdown(x); Treap[o].lson=Treap[x].rson; Treap[x].rson=o; pushup(o); pushup(x); o=x;}void insert(int val,int &o){ if(!o){ o=getnew(val); return; } pushdown(o); Treap[o].sz++; if(val
Treap[o].val){ insert(val,Treap[o].rson); if(Treap[Treap[o].rson].ran
val){ del(val,Treap[o].lson); pushup(o); return; }}int query(int val,int o){ if(!o) return -1; pushdown(o); if(val>=Treap[Treap[o].rson].sz+1&&val<=Treap[Treap[o].rson].sz+Treap[o].times) return Treap[o].val; else if(val>Treap[Treap[o].rson].sz+Treap[o].times) return query(val-Treap[Treap[o].rson].sz-Treap[o].times,Treap[o].lson); else return query(val,Treap[o].rson);}int main(){ int cnt=0; scanf("%d %d",&n,&lim); for(int i=1;i<=n;i++){ char c=getchar(); while(c!='I'&&c!='A'&&c!='S'&&c!='F') c=getchar(); if(c=='I'){ int k; scanf("%d",&k); if(k

转载于:https://www.cnblogs.com/dreagonm/p/10903367.html

你可能感兴趣的文章
谷歌设置支持webgl
查看>>
P3402 【模板】可持久化并查集
查看>>
js的AJAX请求有关知识总结
查看>>
Eclipse添加新server时无法选择Tomcat7的问题
查看>>
L207
查看>>
nginx 配置https 负载均衡
查看>>
双拓扑排序 HDOJ 5098 Smart Software Installer
查看>>
三分 POJ 2420 A Star not a Tree?
查看>>
36.Node.js 工具模块--OS模块系统操作
查看>>
存储过程报错行提示
查看>>
第一篇markdown博文
查看>>
Leetcode 4 - median-of-two-sorted-arrays
查看>>
ERDAS软件应用(四)遥感影像数据增强
查看>>
修改OBS为仅直播音频
查看>>
完整版:《开源框架实战宝典电子书V1.0.0》内测版下载地址!
查看>>
OCA读书笔记(3) - 使用DBCA创建Oracle数据库
查看>>
CKEditor的使用-编辑文本
查看>>
HDU------checksum
查看>>
使用树莓派拍摄延时动画,制作GIF图
查看>>
css命名规范
查看>>