此题的数据范围有误导性啊……
不管怎么样反正考虑莫队(
设莫队当前转移到的区间为 [l,r],转移时新加入一个位置 k。
则除了本身的贡献以外,它会导致所有比它大的数排名升一位,即贡献加一。
于是其影响为 ak(1+r∑i=l[ai<ak])+r∑i=l[ai>ak]ai
计算贡献时将两边差分成前缀相减的形式即可,然后套用二次离线的套路。
注注注注注意里面那个 +1,它不能乱差分的,别把 +1 算成了 −1 啊……
(我才不会说我就是这样子调了半天的)
代码:
1 |
|
此题的数据范围有误导性啊……
不管怎么样反正考虑莫队(
设莫队当前转移到的区间为 [l,r],转移时新加入一个位置 k。
则除了本身的贡献以外,它会导致所有比它大的数排名升一位,即贡献加一。
于是其影响为 ak(1+r∑i=l[ai<ak])+r∑i=l[ai>ak]ai
计算贡献时将两边差分成前缀相减的形式即可,然后套用二次离线的套路。
注注注注注意里面那个 +1,它不能乱差分的,别把 +1 算成了 −1 啊……
(我才不会说我就是这样子调了半天的)
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment