带旋Treap求调,玄关

P3369 【模板】普通平衡树

看起来你好像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


|