传送门
题意简述:
给一个有优先级的 n n n个人的序列,初始的时候第 i i i个人排名为 i i i,现在有 m m m个操作,种类如下:
强制在线, 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小时内删除。
留言与评论(共有 0 条评论) |