AT_abc287_g [ABC287G] Balance Update Query 題解2

harmis_yz發表於2024-03-05

分析

權值線段樹。

給每個節點賦一個值 $val$ 和 $a_i=val$ 的 $b_i$ 之和。

修改 $a_x$ 的時候先將 $a_x$ 的出現次數在樹上剪掉 $b_x$,再在 $y$ 上面加上;修改 $b_x$ 的時候直接加上變化量 $y-b_x$。

由於我們是要取前 $x$ 大的 $a_i$ 之和,在詢問的時候有限考慮右兒子,然後在是當前節點和左兒子。$\sum b_i \le x-1$ 的情況就是整棵樹的第二個值的和不足 $x$。如果離散化,注意一下 $a_i$ 的值即可。

複雜度 $O((n+q)\log(n+q))$。

程式碼

Link.

相關文章