传送门 分块 对每个块维护一个 $add$ 和 $del$ 标记,对于块 $o$ 内某个位置 $i$,它真实的修改量为 $a[i]+add[o]*i-del[o]$ 这样就可以维护一个区间加一个等差数列的操作了 对于操作 $2$,交换两个位置,直接把两个位置的块标记下传,然后直接交换 对于操作 $1$,考虑到相同的块内 $add$ 只会越来越大,对于某个位置 $i$,它一开始是最大的位置,随着标记的增加,比它大的位置显然一定在它右边 所以考虑维护一个数列,使得数列相邻两个位置中,一旦左边的被超越…