O(nlogn+nm) 暴力可过!紫题?绿题!
查看原帖
O(nlogn+nm) 暴力可过!紫题?绿题!
598026
hzlqwq楼主2023/5/20 10:00

rt,一开始预处理逆序对个数,后面每次询问 O(n)O(n) 修订答案即可,感觉完全不用分块和树套树啊,太水了这题,建议要么卡掉暴力要么降绿。

核心代码:

if (a > b)      // 一大槽点,数据没有保证 a < b,如果反了要自己换回来
    swap(a, b); // a 为前面的位置,b 为后面的位置
for (int i = a; i <= b - 1;
     i++) // Δans = 交换后a到b-1中比交换前的h[a]大的数的个数 - 交换前a到b-1中比交换前h[b]大的数的个数 +
          // a+1到b-1中比h[b]小的个数 - a+1到b-1中比h[a]小的个数
{
    ans += h[i] > h[a];
    ans -= h[i] > h[b];
    ans += (h[b] > h[i]) - (h[a] > h[i]); // 当 i=a 时算的就是 h[b]>h[a]
}
2023/5/20 10:00
加载中...