自己的usaco代码---PROB Broken Necklace

来源:互联网 发布:乐器吉他淘宝 编辑:程序博客网 时间:2024/05/21 14:59

原创代码

仅供参考

欢迎评论O(∩_∩)O~

/*ID: 输你自己的PROG: beadsLANG: C++*/#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cmath>using namespace std;int n,f[400],ans=0;char a[1200];int main(){memset(a,'#',sizeof(a));freopen("beads.in","r",stdin);freopen("beads.out","w",stdout);cin>>n;for(int i=1;i<=n;i++)    cin>>a[i];for(int i=n+1;i<=n+n;i++)    a[i]=a[i+n]=a[i-n];char x='w';for(int i=1+n;i<=n*2;i++)  {   int k=i;  f[i-n]=2;   x='w';    while((a[++k]==a[k-1]||a[k]=='w'||a[k-1]=='w'||a[k]==x)&&k<n+i-1){if(a[k-1]=='w'&&a[k]!='w'&&x!='w'&&a[k]!=x) break;        f[i-n]++;        if(a[k]=='w') x=a[k-1];        if(a[k-1]=='w'&&x=='w'&&a[k]!=x) x=a[k];}   int t=k-n*2;   x='w';   k=i-1;   while((a[--k]==a[k+1]||a[k]=='w'||a[k+1]=='w'||a[k]==x)&&k>n+t){ if(a[k+1]=='w'&&a[k]!='w'&&a[k]!=x&&x!='w') break;     f[i-n]++;     if(a[k]=='w'&&a[k+1]!='w') x=a[k+1];     if(a[k+1]=='w'&&a[k]==x&&x!='w') x=a[k];    }   }for(int i=1;i<=n;i++)   ans=max(ans,f[i]);cout<<ans<<endl;return 0;}


 

原创粉丝点击