算法设计中的误差

tle error in algorithm design

本文关键字:误差 算法      更新时间:2023-10-16

给定尺寸n的二进制字符串,有两种类型的查询

1.输入字符串d显示连续1的最长子阵列

2.c x用于字符串C和整数x的输入,如果零,则将字符串位置更改为1

我的尝试

int main(){
    int n,k,i,j,y,count=0;
    string s,x;
    int maxcount=0;
    cin>>n>>k;
    cin>>s;
    for(j=0;j<k;j++)
    {
        cin>>x;
        if(x=='D')
        {
            maxcount=0;
            for(i=0;i<n;i++)
            {
                if(s[i]=='1')
                {
                    count++;
                } else{
                    maxcount = max(maxcount,count);
                    count=0;
                }
            }
            maxcount = max(maxcount,count);
            cout<<maxcount<<endl;
        } else{
            cin>>x;
            s[x-1] = '1';
        }
    }
return 0;
}

我认为可以使用离线查询完成,任何人都可以建议方法或解决方案

您可以使用不相交的数据结构来解决问题。连续'1的每个子弦将是一个组成部分。当您将一些字符的" 0"更改为" 1"时,您可以使用此元素创建一个新集合。可能有几种情况:

  1. 先验和下一个字符是" 1"。因此您可以合并这三组。
  2. 先验是" 1"。您可以将此与先验集合并。
  3. 接下来是" 1"。您可以将其与下一组合并。