头歌-电子宠物学走路

题目描述

汪酱是一个笨笨的电子宠物,他不太会走路,只会一直迈左腿走,但是小明现在可以指导汪酱走。给定一个长度为 n 的汪酱迈腿图 a,初始每一位都为 L,表示汪酱一直在迈左腿。小明可以给出 q 次迈腿修改指令 x,若 ax​L,则将 ax​ 修改成 R,否则将 ax​ 修改成 L。对于每一次输入指令,请你求出对应的当前汪酱迈步正确次数(对于一个只含字符 L,R 的字符串 s,若其中不存在连续的 LR,则称 s 满足要求)。

输入输出格式

输入格式 第一行有两个整数,分别表示序列的长度 n 和修改操作的次数 q。 接下来 q 行,每行一个整数,表示本次修改的位置 x输出格式 对于每次修改操作,输出一行一个整数表示修改 a 中最长的满足要求的子串的长度。

输入输出样例1

输入

 
  1. 6 2
  2. 2
  3. 4

输出

 
  1. 3
  2. 5

解释 第一次修改第二次迈腿为 R,则前三次走路为 LRL,是正确的迈步方式。 第二次修改第四次迈腿为 R,则整个序列为 LRLRLL,前五次是正确的。

输入输出样例2

输入

 
  1. 6 5
  2. 4
  3. 1
  4. 1
  5. 2
  6. 6

输出

 
  1. 3
  2. 3
  3. 3
  4. 5
  5. 6
说明提示

1≤n,q≤2×105 1≤x≤n

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n, q;
    cin >> n >> q;

    string leg_movements(n, 'L');

    int max_length = 1;
    int current_length = 1;

    for (int i = 0; i < q; ++i) {
        int x;
        cin >> x;

        if (leg_movements[x - 1] == 'L')
            leg_movements[x - 1] = 'R';
        else
            leg_movements[x - 1] = 'L';

        current_length = 1;
        for (int j = 1; j < n; ++j) {
            if (leg_movements[j] != leg_movements[j - 1]) {
                current_length++;
            } else {
                max_length = max(max_length, current_length);
                current_length = 1;
            }
        }

        max_length = max(max_length, current_length);
        cout << max_length << endl;
    }

    return 0;
}

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值