[HDU] 2020中国大学生程序设计竞赛(CCPC) - 网络选拔赛 CCPC Training Class
给定字符串\(s\),重排\(s\),使得它的\(border\)树最高(深)
匹配的时候如果使用一堆单词匹配,其链长不会常与使用串中任意一个字符的匹配长度(因为\(s_1=s_2 \Rightarrow c_1=c_2\)在位置关系上)
所以把相同字符重排到一起就行
这样的话\(border\)每次都减一,也就是字符个数
所以答案就是出现次数最多的字符
#include
using namespace std;
int main() {
int n; cin >> n;
for(int i = 1 ; i <= n ; ++ i) {
int ans = 0;
map mp;
string str;
cin >> str;
for(int j = 0 ; j < str.length() ; ++ j) {
ans = max(ans, ++ mp[str[j]]);
}
printf("Case #%d: %d\n", i, ans);
}
}