CF713C Sonya and Problem Wihtout a Legend
阿新 • • 發佈:2021-07-12
無
是可以確定的,這樣就使得全域性最大值從 \(y\) 變成了 \(z\)。
首先 \(a_i\gets a_i-i\),預先考慮嚴格遞增的限制,接下來只需要不降即可。
考慮在一個不降的序列後面加入一個數 \(x\),如果之前的最大值 \(y>x\),那麼需要確定一個基準數 \(k\),花費 \(y-x\) 的代價使得 \(x,y\gets k\)。
貪心地考慮,為了花費盡可能小的代價使得最終序列不降,\(k\) 選取得越小越好,不過這取決於以下兩點:
- \(k<x\) 的情況可以後續處理,所以 \(x\leq k\leq y\)。
- 當 \(y\) 前面的最大值 \(z\) 滿足 \(z>k\) 時,這樣修改並不能保證序列不降。
不過 \(k\leq z\)
考慮反悔。一直做,當前面的 \(z\) 全部被降到更低後,別忘了當前這組可變化的範圍仍是 \([x,y]\)。相當於可以在無代價的情況下將 \(y\) 和 \(x\) 變成比 \(z\) 更小的數。
顯然,在這個過程中我們並沒有用到關於 \(x\) 和 \(y\) 的任何資訊直到全域性最大值小於等於 \(x\)。
那麼我們在處理的時候直接將 \(y\) 改成 \(x\) 就能保證最優。