Codeforces Round #462 (Div. 2) C. A Twisty Movement dp + 思维转换
生活随笔
收集整理的這篇文章主要介紹了
Codeforces Round #462 (Div. 2) C. A Twisty Movement dp + 思维转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
傳送門
文章目錄
- 題意:
- 思路:
題意:
給你一個長度為nnn的只包含1,21,21,2的序列aaa,你可以至多翻轉一段區間,求翻轉之后最長非遞減子序列是多長。
思路:
考慮如果翻轉的話,翻轉的子區間肯定是222211112222111122221111這種類型的,再加上前面可能有111,后面可能有222,那么我們求的最長子序列的類型一定是類似于111222111222111222111222111222111222,所以我們只需要求一個類似于這種的序列最長是多少即可。
定義aaa為111111111類型的最長長度,bbb為112211221122類型的最長長度,ccc為112211112211112211類型的最長長度,ddd為112211221122112211221122類型的最長長度。
如果當前為111,那么a=a+1,c=max(c+1,b+1)a=a+1,c=max(c+1,b+1)a=a+1,c=max(c+1,b+1)。
如果當前為222,那么b=max(b+1,a+1),d=max(d+1,c+1)b=max(b+1,a+1),d=max(d+1,c+1)b=max(b+1,a+1),d=max(d+1,c+1)。
直接輸入的時候轉移即可。
總結
以上是生活随笔為你收集整理的Codeforces Round #462 (Div. 2) C. A Twisty Movement dp + 思维转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长痘应该看中医还是西医
- 下一篇: Codeforces Round #63