看起来你好像T飞了?
第一个点WA可能是由于样例逆天。我记得求前驱后继的时候有一点怪。~~样例很小你直接手玩就行~~
关于T飞的点,~~没看出来有啥问题~~可以使用mt19937来让随机数更快更均匀。但这应该不是瓶颈……
对于kth操作你完全可以在前面进行判断节省时间(如果k<1或者k>size就直接输出1)
印象中insert和delete最后要pushup。~~虽然忘了为啥~~估计是这个问题了。可以试试。
by Kazeno_Akina @ 2023-10-19 13:37:18
@[DoraYaoxy](/user/612567) 显然,在Delete的时候是不能push_up的,其次,insert的时候push_up也没什么用,至于rand,那就更不应该是这个题的问题了,可惜我太弱了调不出来/kk
by NaHCO3_tht @ 2023-10-19 14:13:00
@[NaHCO3_tht](/user/473188)
[mycode](https://www.luogu.com.cn/paste/teuoc2o9)可以写个拍子看看试试。
特判是给第一个点的。
我感觉我的maintain应该就类似你的pushup故有此论。主要是T飞很让人不懂,看起来复杂度真的没假阿。
by Kazeno_Akina @ 2023-10-19 14:18:22
@[DoraYaoxy](/user/612567) thx,这就去dp(另:用指针真是可恶啊
by NaHCO3_tht @ 2023-10-19 14:22:17
@[NaHCO3_tht](/user/473188) ~~远古时期马蜂不好我自己都快看不懂了~~
by Kazeno_Akina @ 2023-10-19 14:30:38
@[DoraYaoxy](/user/612567) 找到死因了
```cpp
void Delete(int &p,const int &val){
if(v(p) == val){
if(cnt(p) > 1) --cnt(p),--s(p);
else if(!lc(p) || !rc(p)) p = lc(p)+rc(p);
else if(pri(lc(p)) < pri(rc(p))) Zig(p),Delete(p,val);
else Zag(p),Delete(p,val);
// 这里应该return;
}
--s(p);
if(val < v(p)) Delete(lc(p),val);
else Delete(rc(p),val);
}
```
by NaHCO3_tht @ 2023-10-19 15:13:55
@[NaHCO3_tht](/user/473188) 可怕。~~我调代码能力完全没有了~~
by Kazeno_Akina @ 2023-10-19 15:21:24