sp4487-solution

iorit發表於2024-03-07

SP4487 Solution

link

考慮用 fhq-treap 維護序列:按照 siz 進行 split,每次 split 出前 \(k\) 小的元素。於是這裡就以序列下標為關鍵字,在平衡樹中排序。

\(p\) 處單點插入的話執行 split(rt,p-1,x,y) 後對創造新節點 \(z\) 再執行 rt=merge(merge(x,z),y) 即可。刪除和修改類似,先執行 split(rt,p,x,y),split(x,p-1,x,z) 後刪除或修改 \(z\) 即可。

然後每個節點按小白逛公園的方法維護最大子段和,push_up 時順便維護。