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

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

题意:插入一个数,全体加,全体减,删除小于一个数的所有数,求$k$大


 

全局标记然后平衡树直接搞就行了

删除操作不断的找最小值然后删除复杂度是对的,然而$Candy?$这个沙茶找最小没有判$x==0$超时郁闷了好长时间....

或者你也可以乱搞一个$treap$的左子树删除...时间差了$50ms$左右

然后对于第一种做法潸然生日再次自带$50ms$常数

#include
#include
#include
#include
#include
using namespace std;#define lc t[x].l#define rc t[x].rconst int N=1e5+5;int read(){ char c=getchar();int x=0,f=1; while(c<'0'||c>'9'){
if(c=='-')f=-1; c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();} return x*f;}int n,lim,all,v;char s[5];struct Node{ int l,r,v,w,size,rnd;}t[N];int sz,root;inline void update(int x){t[x].size=t[lc].size+t[rc].size+t[x].w;}inline void rturn(int &x){ int c=lc;lc=t[c].r;t[c].r=x; t[c].size=t[x].size;update(x);x=c;}inline void lturn(int &x){ int c=rc;rc=t[c].l;t[c].l=x; t[c].size=t[x].size;update(x);x=c;}void treIns(int &x,int v){ if(x==0){ x=++sz; t[x].l=t[x].r=0;t[x].v=v; t[x].w=t[x].size=1; t[x].rnd=rand(); }else{ t[x].size++; if(v==t[x].v) t[x].w++; else if(v
1) t[x].w--,t[x].size--; else if(!lc||!rc) x=lc|rc; else if(t[lc].rnd
=lim) treIns(root,v-all);} else if(s[0]=='A') all+=v; else if(s[0]=='S'){ all-=v; //int mn=findMin(root);//printf("mn %d\n",mn); //while(mn+all
t[root].size) puts("-1"); else printf("%d\n",kth(root,t[root].size-v+1)+all); } } printf("%d",delcnt);}

 

转载地址:http://ljnbm.baihongyu.com/

你可能感兴趣的文章
samtools和bcftools使用说明
查看>>
OC中使用 static 、 extern、 const使用
查看>>
Code Chef January Challenge 2019题解
查看>>
洛谷P3527 [POI2011]MET-Meteors(整体二分)
查看>>
extjs 点击链接到另一个页面 并激活另一个页面的指定tab
查看>>
JAVA Shallow heap & Retained heap
查看>>
2018"百度之星"程序设计大赛 - 资格赛
查看>>
DGUT_FLY退役贴 && FunCfans毕业总结-竞赛篇
查看>>
[]斯特林数
查看>>
麻省理工学院公开课:经典力学
查看>>
一点声明
查看>>
【百度人脸识别开发套件】开放人脸识别APP及SDK,加速二次开发进程
查看>>
2017京东笔试总结
查看>>
人生真是圆的,从BASIC开始的程序人生,又回到了BASIC,难道。。。。。
查看>>
JavaScript基础语法
查看>>
习题6-4 使用函数输出指定范围内的Fibonacci数
查看>>
代码清单3-10 一个完整的泛型枚举——从0枚举到9
查看>>
myeclipse 编码问题
查看>>
POJ1637 Sightseeing Tour
查看>>
spring数据绑定默认的日期解析格式解析不了yyyy格式
查看>>