1. 程式人生 > >CF1109B Sasha and One More Name

CF1109B Sasha and One More Name

cpp 驗證 sas force 字母 imp com 一個 以及

CF1109B Sasha and One More Name

  • 構造類題目.仔細看樣例解釋能發現點東西?
  • 結論:答案只可能是 \(Impossible,1,2\) .
    • \(Impossible:\)\(n\) 個或 \(n-1\) 個相同的字母,顯然無法拼出另一個回文串.(樣例3)
    • \(1:\) \(Cut\) \(1\) 次,相當於是做了原串的一個循環排列. \(O(n^2)\) 對所有循環排列驗證是否符合要求即可.(樣例4)
    • \(2:\) 在原串中找出一段 \(len<n/2\) 的前綴以及與它等長的後綴,將它們 \(Cut\) 出後交換.若所有的前綴與對應交換後都不符合要求,則一定是 \(Impossible\)
      對應的兩種局面,否則至少有一個前綴 \(pre\) 滿足 \(pre!=inverse(pre)\),即它對應的 \(suf\) ,交換兩者即得一個合法的解.(樣例1)
  • 只需判斷是否為前 \(2\) 種情況,時間復雜度為 \(O(n^2)\) .
代碼:咕了

CF1109B Sasha and One More Name