2020CCPC网络选拔赛:CCPC Training Class

题目:

在这里插入图片描述
在这里插入图片描述
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)了。代码和上文相同。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr顺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值