<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代碼: