1. 程式人生 > 其它 >CF713C Sonya and Problem Wihtout a Legend

CF713C Sonya and Problem Wihtout a Legend

首先 \(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\)

是可以確定的,這樣就使得全域性最大值從 \(y\) 變成了 \(z\)

考慮反悔。一直做,當前面的 \(z\) 全部被降到更低後,別忘了當前這組可變化的範圍仍是 \([x,y]\)。相當於可以在無代價的情況下將 \(y\)\(x\) 變成比 \(z\) 更小的數。

顯然,在這個過程中我們並沒有用到關於 \(x\)\(y\) 的任何資訊直到全域性最大值小於等於 \(x\)

那麼我們在處理的時候直接將 \(y\) 改成 \(x\) 就能保證最優。