Loading

[HDU] 2020中国大学生程序设计竞赛(CCPC) - 网络选拔赛 CCPC Training Class

image


给定字符串\(s\),重排\(s\),使得它的\(border\)树最高(深)

匹配的时候如果使用一堆单词匹配,其链长不会常与使用串中任意一个字符的匹配长度(因为\(s_1=s_2 \Rightarrow c_1=c_2\)在位置关系上)

所以把相同字符重排到一起就行

这样的话\(border\)每次都减一,也就是字符个数

所以答案就是出现次数最多的字符

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n; cin >> n;
    for(int i = 1 ; i <= n ; ++ i) {
        int ans = 0;
        map<int, int> 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);
    }
}
posted @ 2021-10-10 00:06  nekko  阅读(31)  评论(0)    收藏  举报