2011年3月4日 星期五

Codeforces #25 E Test

題意﹕給了三個字串,求最短能包含所有字串的長度。

做法﹕暴力枚舉,每次融合一個新字串的時候,考慮三件事。

1) 相互包含。KMP檢測。
2) 字串A前置字串B。A的後綴可以與B的前綴重叠。檢測重叠的方法也是KMP,構造B$A的失敗函數,取其函數最後位的數值即表示前後綴重叠長度。
3) 字串B前置字串A。做法與(2)一致。

需要cut case。即如現在融合字串長度超於最佳長度則中斷枚舉。

沒有留言: