【Codeforces 1137B】Camp Schedule

Codeforces 1137 B

题意:给两个串\(S\)\(T\),问将\(S\)中字符任意调换后出现\(T\)次数最多的方案。

思路:我们首先考虑怎么样放\(T\)才是最优的。我们直观上考虑前后两个\(T\)的出现肯定要重叠一定的面积,那么我们考虑\(T\)的最长的与前缀相同的后缀\(T'\),我们最终的答案希望是这样的:\(TT...TT'\)

所以我们枚举\(T'\)出现的次数,看\(S\)中字符是不是够即可。\(T'\)的长度需要用\(Z\_function\)或KMP来求。我考试的时候忘了KMP怎么写,于是就用\(Z\_Function\)代替。掌握不熟练。

猜你喜欢

转载自www.cnblogs.com/denverjin/p/10503819.html