bzoj3595: [Scoi2014]方伯伯的Oj(splay+map+set)

阅读: 评论:0

bzoj3595: [Scoi2014]方伯伯的Oj(splay+map+set)

bzoj3595: [Scoi2014]方伯伯的Oj(splay+map+set)

传送门
题意简述:
给一个有优先级的 n n n个人的序列,初始的时候第 i i i个人排名为 i i i,现在有 m m m个操作,种类如下:

  1. 把编号为 x x x的改成 y y y,输出改前 x x x的排名
  2. 把编号为 x x x放到队首,输出改前 x x x的排名
  3. 把编号为 x x x放到队尾,输出改前 x x x的排名
  4. 输出排名为 x x x的编号。

强制在线, n ≤ 1 e 8 , m ≤ 1 e 5 nle1e8,mle1e5 n≤1e8,m≤1e5


思路:
本蒟蒻的第一道 s p l a y ! splay! splay!过了好激动 q w q qwq qwq
由于 n n n较大直接上平衡树 t t t飞,考虑到操作数少,如果我们把未修改的段压成一个点然后用 s p l a y splay splay维护,每次就只会最多把一个分成 3 3 3个,最终节点数只有 3 e 5 3e5 3e5个就可以过了,于是用 s e t set set和 m a p map map辅助维护一下即可。
注意细节。
然而博主的常数太大bzoj过不了,实测1s能跑过
代码:

#include<bits/stdc++.h>
#define ri register int
#define fi first
#define se second
using namespace std;
const int rlen=1<<18|1;
inline char gc(){static char buf[rlen],*ib,*ob;(ib==ob)&&(ob=(ib=buf)+fread(buf,1,rlen,stdin));return ib==ob?

本文发布于:2024-01-31 13:07:09,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170667762928744.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:伯伯   Oj   set   map   splay
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23