1 条题解

  • 0
    @ 2026-5-4 2:28:57

    答案显然具有可二分性,于是我们套上二分,现在问题转化为是否有一个长度为 ss 的区间,满足对于这个区间的 diK\sum \left| d_{i} \right| \leq K

    现在我们考虑设一个函数 f(x)f(x),表示 [x,x+s1][x,x+s-1] 这个区间的 di\sum \left| d_{i} \right|。现在我们思考每一个区间 [Li,Ri][L_{i},R_{i}]f(x)f(x) 的贡献 g(x)g(x),可以发现这是一个分段函数的形式,式子如下。

    $$g(x)= \left\{ \begin{align} & -x+L_{i} \, & x \leq L_{i} \nonumber \\ & 0 \, & L_{i} < x < R_{i}-s+1 \nonumber \\ & x-(R_{i}-s+1) & x \geq R_{i}-s+1 \nonumber \end{align} \right.$$

    这是一个凸函数,所以最小值必定取在折点处。更进一步,还有 g(x)g(x) 分段函数的两部分是独立的,那么我们可以分别对 L,RL,R 排序,然后扫一遍求出所有的 f(x)f(x) 即可,单次 O(n)\mathcal{O}(n),那么总复杂度就是 O(nlogn)\mathcal{O}(n \log n)

    • 1

    信息

    ID
    9609
    时间
    1200ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者