您的位置:首页 > 其它

Codeforces Round #354 (Div. 2) C. Vasya and String 尺取

2016-06-01 18:46 323 查看
题目大意:

给你一个只含‘a’ ‘ b ’ 的字符串,问不超过k次替换(‘a’换成‘b’,‘b’换成‘a’)可以产生的

最长连续且字符都相同的子串的长度是多少。“裸的”尺取。

#include<bits/stdc++.h>
using namespace std;
const int maxn=100005;

char s[maxn];
int a[maxn];
int n,k;

int work(){
int s=0,t=0,ans=0;
int cnt=0;
while( s<=t ){
while( cnt<=k &&t<n ){
if( a[t]==0 ){
cnt++;
}
if(cnt<=k)
ans=max( ans,t-s+1 );
t++;
}
if( a[s]==0 )cnt--;
s++;
}
return ans;
}

int main()
{
scanf("%d%d",&n,&k);
scanf("%s",s);
for(int i=0;i<n;i++){
a[i]=s[i]-'a';
}
int ans1=work();
for(int i=0;i<n;i++)a[i]=a[i]?0:1;
int ans2=work();
printf("%d\n",max(ans1,ans2));

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  尺取