【noi 模拟】口胡

4.30

城市地平线

枚举区间端点并令两个端点都是区间前 \(k\) 大,这样的区间和方案一一对应。直接计算仍然是困难的,考虑枚举第 \(k\) 大的位置并标记该位置和比该数大的位置,设有 \(x\) 个标记,该数为左数第 \(rk\) 个,那么以该数为端点的区间数为 \(\min(k,rk,x-k+1,x-rk+1)\)(左右各 \(k\) 个)

发现这是个关于 \(k\) 的一次函数,同时维护每个 \(k\) 对应的系数和常数,每个位置的贡献形式是对 \(O(1)\)\(k\) 区间加,差分即可

posted @ 2022-05-02 22:17  401rk8  阅读(43)  评论(0编辑  收藏  举报