Atcoder ARC 088 D
想了半个小时的结论,结果没想出来。
我们可以考虑第
k
位和第
我们可以发现
K
最多为
证明过程:
对于
∀iϵ[1,n−k]
且
s[i]≠s[i+1]
我们可以
flip[i+1,n]
对于
∀iϵ(n−k,n)
且
s[i]≠s[i+1]
我们可以
flip[1,i]
这样我们就可以做到结果了
(atcoder的题目太灵活啊)
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 100010
using namespace std;
char s[maxn];
int t,len,l,r;
int main()
{
scanf("%s",s+1);
len=strlen(s+1);
t=0x3f3f3f3f;
for(int i=1;i<len;++i)
if(s[i]!=s[i+1]) t=min(t,max(len-i,i));
if(t==0x3f3f3f3f)
cout<<len<<endl;
else
cout<<t<<endl;
return 0;
}