1 条题解

  • 0
    @ 2025-10-8 16:54:54
    #include<bits/stdc++.h>
    using namespace std;
    char s[800], ys[150];
    int main()
    {
        int n;scanf("%d%s", &n, s);
        int ans=0;
        for(int i=0;i<n;i++)s[i+n]=s[i];
        ys['b']=1;ys['r']=2;ys['w']=3;
        for(int st=0;st<n;st++)
        {
            int ed=st+n-1;
            int s1=1, s2=1;
            int ok=ys[s[st]];
            for(int i=st+1;i<=ed;i++)
            {
                if(ys[s[i]]==3)s1++;
                else
                {
                    if(ok==3){ok=ys[s[i]];s1++;}
                    else
                    {
                        if(ok==ys[s[i]])s1++;
                        else break;
                    }
                }
            }
            ok=ys[s[ed]];
            for(int i=ed-1;i>=st;i--)
            {
                if(ys[s[i]]==3)s2++;
                else
                {
                    if(ok==3){ok=ys[s[i]];s2++;}
                    else
                    {
                        if(ok==ys[s[i]])s2++;
                        else break;
                    }
                }
            }
            ans=max(ans, s1+s2);
        }
        printf("%d\n", min(ans, n));
        return 0;
    }
    
    • 1

    【字符串基础】字符统计[USACO1.1]Broken Necklace

    信息

    ID
    982
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    93
    已通过
    35
    上传者