题目:
Sample Input
5
abcde
sankaranarayanan
abbccaabc
programming
monotone
Sample Output
Case #1: 1
Case #2: 7
Case #3: 3
Case #4: 2
Case #5: 3
这道题是一个典型的签到题,因为可以在不理解题目的情况下知道,将其AC。
思路: 我们看看输入和输出,仔细观察不难发现,字母中串中出现最多的字母的个数是输出结果(你会说有些字母出现的次数一样啊,老子就不信你这套,客官~别急,听我慢慢道来)这里有些字母出现的次数相同,这就记一次就行了,作为最后的结果输出。
明确思路后就剩下实现了。
#include <iostream>
using namespace std;
const int maxn = 1e5 + 10;
int main() {
ios::sync_with_stdio(0);//实现优化cin和cout的速度
cin.tie(0), cout.tie(0);
int T, tmp = 0;
cin >> T;
while (T--) {
string s;
cin >> s;
int a[26] = { 0 };
int len = s.length(), ans = 0;
for (int i = 0; i < len; ++i) {
++a[s[i] - 'a'];//这里要仔细思考一下s[i]-'a'代表什么,答:数字(下标)
ans = max(ans, a[s[i] - 'a']);
}
printf("Case #%d: %d\n",++tmp,ans);
}
return 0;
}
简单的解法毕。
根据题意解析:
小火山正在帮助他的CCPC教练准备一个新的CCPC训练比赛,他想生成关于边链树的高质量数据(不需要知道边链树是什么),但是遇到了一些麻烦,你能帮他一下吗?
在本段中,我们正式定义了数据质量问题,对于一些字符串s=s1s2s3···sn,我们使用s[ l:r ]表示从l到r的子字符串,如果l>r,则s[ l:r ]为空。 我们进一步的定义:
表示第i个位置的最长边,则定义D(i)表示第i个位置的边链长度:
该字符串的质量W定义为D的最大值:
为了防止用单纯的蛮力算法区分边界树,小火山需要生成字符串,使其质量W尽可能大。现在给定一个字符串s, 你可以任意排列该字符串。你们能计算出字符串排列后能达到的最大质量是多少吗?
这里我们就会了解同样但 不相连的字符是可以连接的,比如:aaba的质量分别为:3(aaa)和1(b),因为我已经认为不同字符之间是不具有连接性的(题目中的意思如此),既然这样那么我们只需求出字符串中出现最多的字符就可以记为:max(W)了。代码和上文相同。