決策單調性複習

決策單調性複習

二分棧

直接畫圖吧

有時候dp的決策會滿足單調性,如下:(曲線代表前面的某個決策點對於x座標上的數的貢獻構成的圖像)

其中1234起點依次遞增。現在來看1和2兩條曲線,在交點前2更優,交點後1更優。因爲1的起點在2之前,並且有決策單調性(斜率單增,1比2增長的越來越快),所以總有一個點使得在這之後1比2更優。而如果是下面這種:

2就永遠不可能比1更優。

於是就自然的有一種想法:二分出什麼時候後面比前面更優,並且搞一個單調棧來保存。

關於具體方法:先看第一張圖中的1,2和4,假設現在棧中是1,2,現在處理4,可以發現4和2的交點在1和2的交點之後

那麼在1和2的交點後1更優,4和2的交點前4更優,2就沒用了。

有用的情況可以看1,2和3,則在2和3的交點後,1和2的交點前2是有用的。

那麼我們求出當前曲線和棧裏最後的曲線的交點,和棧裏最後兩條曲線的交點比較就行了。注意隨着x的增加要彈棧。還有一個注意事項是二分的下界,出現第二種情況的時候交點應該是0。

而對於斜率單調降的函數也差不多,開個單調隊列就行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章