题解 CF1025C 【Plasticine zebra】
ouuan
2018-08-20 14:08:16
抽象派题解...
设原串长这样(被分成了两段):
![](http://r.photo.store.qq.com/psb?/V11ZEfn31hRqZy/8gpWNgbn27GsLamvSW*XpfAv7xV0nMH263AwqRwZ51Y!/r/dDABAAAAAAAA)
操作后就长这样:
![](http://r.photo.store.qq.com/psb?/V11ZEfn31hRqZy/6yIfDOM7wI46pFAOoRC2bBJ0sqJDovA9umJzTBn1n14!/r/dDQBAAAAAAAA)
实际上就相当于这样(把后面的串移到前面):
![](http://r.photo.store.qq.com/psb?/V11ZEfn31hRqZy/TggqPQYFRMN9*R8K03h6MP6KBTruZSB4WH*lRfAEQig!/r/dDYBAAAAAAAA)
所以这个串实际上可以看成一个环.(~~PPT是世界上最好的绘图软件!~~)
化环为链扫一遍就好了,注意答案对串的长度取min
```
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
string s;
int main()
{
int i,ans,t;
cin>>s;
s+=s;
ans=t=1;
for (i=1;i<s.size();++i)
{
if (s[i]==s[i-1])
{
t=1;
}
else
{
++t;
ans=max(ans,t);
}
}
cout<<min(ans,int(s.size()/2));
return 0;
}
```