題解搬運工
設原問題為問題A。每一次減少\(\min\{p_i , p_{i+1}\}\)難以處理,我們考慮將限制變得寬松一些:每一次可以減少\([1,\min\{p_i , p_{i+1}\}]\)的任意值,需要滿足的終止條件與問題A相同。我們稱其為問題B,設區間\([l,r]\)在問題B操作下的答案為\(g_{l,r}\)。顯然問題B的答案要小於等於問題A。
再考慮:在問題AB中,最后的結果一定是兩個正數之間有一段0。我們再考慮:設\(f_{l,r}\)表示只操作區間\([l,r]\)使得區間\([l,r]\)的值全部小於等於\(0\)(可以為負)的最小代價,設其為問題C。不難發現:設\(c_l = p_l\),\(c_i = \max\{p_i - c_{i-1} , 0\} , i \in [l+1,r]\),那么\(f_{l,r} = \sum\limits_{i=l}^r c_i\)。
首先,\(f_{l,l} = g_{l-1,l+1}\),\(f_{l,l+1} = g_{l-1,l+2}\),而
\(f_{l,r} = \sum\limits_{i=l}^rc_i = \sum\limits_{i=l}^{r-2}c_i + c_{r-1} + \max\{p_r - c_{r-1} , 0\} = f_{l,r-2} + \max\{p_r , c_{r-1}\} \geq f_{l,r-2} + f_{r,r}\)
不難發現中間漏掉了一個\(r-1\),相當於\(r-1\)不變為\(0\),而\([l,r-2]\)和\([r,r]\)變為\(0\),也就是說在最優情況中\(r-1\)會保留下來,即\(g_{l-1,r+1} = g_{l-1,r-1} + g_{r-1,r+1}\)。不斷遞歸下去就可以知道\(g_{l-1,r+1}\)的最優情況中,極長的\(0\)連續段不會超過\(2\)。
因為極長\(0\)段小於等於\(2\),所以問題C中不會出現負數,所以問題C中構造的解在問題B中一定滿足。至此我們完成了C到B的轉化。
同時注意到問題B中的所有操作一定會讓若干個數變為\(0\),所以在問題B中的可行操作在問題A中也一定可行(這個感性理解好了,不知道怎么嚴格證明),即在問題A中極長連續\(0\)段長度不會超過\(2\)
接下來考慮DP:設\(f_{i}\)表示以\(i\)結尾、選擇\(i\)的\([1,i]\)的最優答案,轉移考慮其之前選擇多少個\(0\),並記下轉移點。值得注意的是如果存在兩個\(0\),那么最少步數一定是\(\max\{p_{i-1} , p_{i-2}\}\),即先對\(p_{i-1} , p_{i-2}\)做一次,剩下的一次再做完。最后還原DP結果輸出構造方案即可。
值得注意的一點是如果\(f_i\)的操作過程中使得某個數變為負數是一定不優的,由問題C就可以知道這一點。