我是靠谱客的博主 孤独猫咪,最近开发中收集的这篇文章主要介绍codeforces 1025C Plasticine zebra,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

链接http://codeforces.com/contest/1025/problem/C

在由w和b组成的字符串中切一刀,两段各自逆序,然和拼接,要求最后w和b轮流出现的最长子段的长度。这个操作有一个很特殊的性质。先考虑字符串“1234|54321”在‘|’处切开,然后逆序之后的新字符串是“4321|12345”。想象将字符串的两段连起来组成一个环,可以发现字符串的相对顺序没变,原字符串顺时针和后字符串的逆时针是一样的,所以只要在字符串中找到最长的符合要求的子段即可。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#define DEBUG(x) cout<<#x<<" = "<<x<<endl
using namespace std;
const int MAXN=1e5+10;
char s[MAXN];
int main()
{
//    freopen("in.txt","r",stdin);
    scanf("%s",s);
    int l=strlen(s);
    bool w=s[0]=='w';
    int ans=-1;
    int cnt=0;
    int k=0;
    while(1){
        int i=k%l;
        if(w^(s[i]=='w')){
            ans=max(ans,cnt);
            if(k>=l)break;
            cnt=0;
            w=s[i]=='w';
            ///if(s[i]=='b')k++;
        }
        else {
            cnt++;
            w^=1;
            k++;
        }
        if(k==2*l){ans=cnt/2;break;}
    }
    printf("%dn",ans);
}

 

转载于:https://www.cnblogs.com/MalcolmMeng/p/9536620.html

最后

以上就是孤独猫咪为你收集整理的codeforces 1025C Plasticine zebra的全部内容,希望文章能够帮你解决codeforces 1025C Plasticine zebra所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部