#include<bits/stdc++.h>
using namespace std;
char a[3010];
int n,ans,ans1,ans2;
int dfs(int x,int p,int i)
{
int q=p+x;int w;
if(p-i==n||i-p==n)
{
printf("%d\n",n);
exit(0);
}
if(a[p]==a[q])w=dfs(x,q,i);
else if(a[q]=='w')
{
a[q]=a[p];
w=dfs(x,q,i);
a[q]='w';
}
else return 1;
return (w+1);
}
int main()
{
scanf("%d ",&n);
for(int i=1;i<=n;i++)
{
scanf("%c",&a[i]);
a[n+i]=a[i];
a[2*n+i]=a[i];
}
for(int i=n+1;i<=2*n;i++)
{
ans1=0;
ans2=0;
if(a[i]=='w')
{
a[i]='b';
ans1=dfs(-1,i,i);
a[i]='r';
ans1=max(ans1,dfs(-1,i,i));
a[i]='w';
}
else ans1=dfs(-1,i,i);
if(a[i+1]=='w')
{
a[i+1]='b';
ans2=dfs(1,i+1,i+1);
a[i+1]='r';
ans2=max(ans2,dfs(1,i+1,i+1));
a[i+1]='w';
}
else ans2=dfs(1,i+1,i+1);
if(ans1+ans2>=n)
{
printf("%d\n",n);return 0;
}
ans=max(ans,ans1+ans2);
}
printf("%d\n",ans);
return 0;
}
luogu1203/USACO1.2:Broken Necklace
最新推荐文章于 2023-02-17 11:45:00 发布