2 条题解

  • 2
    @ 2026-8-26 9:55:47

    看到环果断断链、倍增

    看到平均值最大果断二分答案

    看到长度限制 [L, U] 果断单调队列

    对数组维护一个前缀和,对前缀和维护单调递增的单调队列

    每扫过一个数sum[i],将sum[i-L]加入单调队列,再把距离i超过R的点删掉

    长度为偶数?对奇数位置和偶数位置分别维护一个单调队列即可

    =======================================

    二分答案 ans

    之后将所有数全部减去ans,如果存在一个连续子序列满足

    ①和为正;②长度为偶数且在范围[L, U]内

    说明答案比ans大,否则比ans小

    可以求出前缀和并用单调队列维护,就可以O(n)判定了

    提示:对于当前sum[i],一定是尽可能找到最小的sum[j] (i-j∈[L, U] && ((i-j)%2==0) )

    来判定sum[i]-sum[j]是否大于0

    细节比较多:

    ①它是个环,所以要先把数组复制一遍并接在后面

    ②因为长度是偶数,所以要两次单调队列,一次处理0,2,4,6,8…,一次处理1,3,5,7,9,…

    ③因为长度不能小于L, 所以当你遍历到sum[i]时,肯定是将sum[i-L]或者sum[i-L-1]加入队列

    信息

    ID
    797
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    76
    已通过
    3
    上传者