2024 第 15 场 小白入门赛 大闹蟠桃园

题目

解题思路:

这道问题的解题思路主要是通过处理环形字符串来找到连续没有天兵把守的道路的最长长度。具体解题步骤和所采用的算法如下:

        1.环形字符串处理

  • 因为道路是环形的,所以需要考虑从字符串的末尾回到开头的情况。为了处理这种情况,可以将原始字符串 s 拼接两次,这样可以把环形问题转化为非环形问题。即,通过拼接字符串,我们可以在 s + s 中找到连续的最长子序列,而不需要处理环形的复杂情况。

        2.动态规划

  • 使用一个数组 a 来记录从当前位置开始的连续无天兵把守的道路的长度。

  • 遍历拼接后的字符串 s + s,根据当前位置的状态更新 a 数组。

  • 如果当前道路没有天兵把守(Q),则当前长度为前一个长度加1;如果有天兵把守(L),则当前长度重置为0。

        3.计算最长连续长度

  • 在遍历结束后,计算每条道路在拼接后的字符串中最大连续无天兵把守的长度,并找出最大值。

        4.输出结果

  • 根据最大长度计算所有分身采摘的蟠桃数量的最大可能值。

运行结果

c++代码

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

typedef long long LL;
const LL N = 1e5 + 10;  // 可能的最大值,确保足够大
LL a[2 * N];

int main() {
    int n;
    cin >> n;
    string s;
    cin >> s;

    // 遍历拼接后的字符串
    if (s[0] == 'Q') {
        a[0] = 1;
    } else {
        a[0] = 0;
    }

    // 每条道路在连续移动时的最长无天兵把守的长度
    for (int i = 1; i < 2 * n; ++i) {
        int index = i % n;  // 索引在原始字符串中的位置
        if (s[index] == 'Q') {
            a[i] = a[i - 1] + 1;  // 如果当前道路没有天兵把守,长度增加1
        } else {
            a[i] = 0;  // 如果当前道路有天兵把守,长度重置为0
        }
    }

    LL SUM = 0;
    // 计算每条道路的最大无天兵把守长度,并累加到SUM
    for (int i = 0; i < n; ++i) {
        SUM += max(a[i], a[n + i]);
    }

    cout << SUM << endl;

    return 0;
}

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当孙悟空吃蟠桃时,华为OD可能会通过其技术和产品提供支持与帮助。 首先,华为OD是华为的开放开发平台,为开发者和合作伙伴提供了丰富的技术资源和开发工具。在孙悟空吃蟠桃景下,华为OD可能会提供一种基于物联网技术的智能食品追溯系统。这个系统可以追踪蟠桃的种植、采摘、存储、运输等环节的信息,确保蟠桃的安全和品质。开发者可以通过华为OD平台的技术资源和工具,以及与华为合作伙伴的协作,构建这样一个智能食品追溯系统。 其次,华为OD平台可能还提供一些与孙悟空吃蟠桃相关的应用程序。比如,一个基于华为OD平台的智能家居应用,可以通过识别孙悟空的声音或人脸,自动提供一些便利的功能。比如,当孙悟空靠近蟠桃时,系统可以自动将蟠桃洗净或剥皮,或者提供一些有关蟠桃的健康食谱推荐。 最后,华为OD平台还可能提供一些与蟠桃相关的社交媒体应用。可以想象,孙悟空吃蟠桃景会引起很多人的兴趣和关注,人们可能愿意分享自己的蟠桃经历、菜谱或者与孙悟空的互动等。华为OD平台可以提供一个社交媒体平台,让用户可以方便地分享和交流这些有趣的内容。 总之,华为OD可能会通过技术支持、应用开发和社交媒体等方面,为孙悟空吃蟠桃这个景提供多样化的解决方案和体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值