Codeforces - 1335E1 枚舉 + vector應用

<Codeforces - 1335E1> 枚舉 + vector應用

http://codeforces.com/contest/1335/problem/E1

題意:

cas個查詢,每個查詢給定一個數列,讓你刪除其中一些元素,使得這個數列變成 {aa...a}{bb...b}{aa...a} 型的迴文串,求這個迴文串的最大長度。比如數列 121333121 刪除黑色兩個2以後,變成滿足題意的最長迴文串就是 1133311,即長度爲7.

思路:

先用vector處理好每個元素的位置,然後枚舉a,即先枚舉迴文串左右兩部分的元素,如果枚舉到的元素少於兩個說明沒法拆成左右兩邊各一半,continue. 如果枚舉到的元素的個數即pos[i].size() >= 2,那麼從 pos[i][l] 和 pos[i][r] 這兩個端點位置向內夾逼,每次先執行res += 2,即不斷擴展左右兩側元素的個數。然後枚舉中間元素,看所有的中間元素包括a這個數本身,最多有幾個出現在夾逼的區間內,記最大的出現次數dd,ans每次維護較大的 res+dd 即爲當前最大長度。

AC代碼:

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