P8539 「Wdoi-2」來自地上的支援
移項維護特殊值。
這題思路還是挺簡單的。
首先分析操作。發現操作序列一定是單調遞增的,也就是每個數只會被選中連續幾次,之後就不會再被選中了。
然後分析詢問。我們發現要滿足條件,\(x\) 顯然是在 \([x, x+k-1]\) 被選中。
那麼首先 \(x+k-1>n\) 一定無解。
要滿足在第 \(x\) 次操作被選中,設 \(mx_x\) 為前 \(1\) 到 \(x-1\) 次操作完的操作序列結尾(也就是操作完後 \([1,x-1]\) 中的最大值),那麼有 \(a_x\ge mx\)。(相等顯然可以被選)
要在之後的 \([x+1,x+k-1]\) 中被選中,滿足對於 \(j\in [x+1,x+k-1]\),有 \(a_i+(j-i)\times v>a_j\),根據維護技巧移項,即 \(a_i-i\times v>a_j-j\times v\)。所以我們只需要求出最大的 \(a_j-j\times v\) 即可。
考慮線段樹,因為 st 表空間爆了。於是每個詢問的答案即為 \(ans=\max(mx_x,query(x+1,x+k-1)+i\times v+1)\)。
注意是大於號,要加 \(1\)。
複雜度 \(O(n+m\log n)\),由於時限為 2s,算穩吧。
這題有線性做法,但就是繞一點。