varinic 的博客

弱弱弱

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

题目大意:

给你一个只含‘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;
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mtrix/article/details/51558140
文章标签: 尺取
个人分类: 尺取
上一篇POJ 3630 Phone List 静态字典树Trietree
下一篇POJ 2761 Feed the dogs Treap+离散处理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭