[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);
    }
}