关闭

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

标签: 尺取
181人阅读 评论(0) 收藏 举报
分类:

题目大意:

给你一个只含‘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;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21978次
    • 积分:984
    • 等级:
    • 排名:千里之外
    • 原创:78篇
    • 转载:5篇
    • 译文:0篇
    • 评论:4条
    最新评论