Gym 101612B Consonant Fencity
阿新 • • 發佈:2018-01-01
nload force 統計 就是 icpc attach pdf cpc tro 和主程序226*262的時間復雜度內求解,但是看起來不夠?題目已經貼心地為我們準備了大餐——首先有7個元音字母,也就是說枚舉的狀態不會大於219,這就差不多夠了。出題人還生怕卡掉常數大的正解,將時限設為3s。一句話,想出正解沒有TLE的理由。
原題傳送門
題意:給定一個只含小寫字母的字符串,假設aeiouyw為元音字母,現在要把一些字母變為大寫,要求相同字母的大小寫必須相同,統計變化後的字符串中有多少對相鄰、同為輔音字母且大小寫不一樣的字符對,輸出能這樣的字符對數量最大的字符串。字符串長度≤106。
分析:初讀題,106的確嚇了我一跳:這道題不像是有線性解法的樣子。但只要仔細讀題,看到相同字母的大小寫必須相同這個條件,就不難發現其實106只是表象,真正有用的是字母——只要枚舉字母的大小寫情況,字符串多長根本不用在意。當然也不是真的不在意,考慮到相鄰的字符對至多只有106種,我們完全可以預處理,將這些字符對的關系存在一個26*26的數組sum裏,其中sum[i][j]表示左邊為i,右邊為j的字符對的數目,這樣利用狀態壓縮(不是狀壓DP。。),可以在預處理106
註意幾個細節:為了能方便枚舉219個狀態,建議將26個字符中的輔音字母與0-18進行一一對應,最後輸出時再將狀態轉化回來,這樣避免了表面枚舉219,實際上枚舉226的尷尬。但是這樣帶來了一個問題(至少對我來說是個問題),那就是對應數組的使用有很多細節要註意,一不留神就會將下標錯開一位,導致整個字符串就不對了。
代碼
Gym 101612B Consonant Fencity