首页 > 其他分享 >Nikita and string CodeForces - 877B

Nikita and string CodeForces - 877B

时间:2022-09-23 15:14:57浏览次数:39  
标签:aba ab string int Nikita 877B 空串 ba

Nikita and string CodeForces - 877B

有一个全由a和b组成的字符串,可以切成三部分。满足如下规则:

  • 第一部分只包含a或者是空串。
  • 第二部分只包含b或者是空串。
  • 第三部分只包含a或者是空串。

为了使原串符合条件,可以去掉原串中的一些字符,但不可以改变顺序。

Input

输入为一个只包含 a 和 b 的串,且长度不超过 5000。

Output

输出一个整数。整数为切完后三部分串长度的总和的最大值。
如样例1,abba 可以在不删除任何字符的情况下切成 a+bb+a,所以长度总和为 4。
如样例2,ba b可以在删除第一个字符的情况下切成 a+b+NULL,所以长度总和为 2。

Sample Input

abba
bab

Sample Output

4
2

分析

数据可以分为:空,a,b,ab,ba,aba - 五类,相互间存在依存关系,如:
a 一定是 a,ba,aba 的一部分,
b 一定是 b,ab,aba 的一部分,
ab,ba 一定是 aba 的一部分。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e6+10,INF=0x3f3f3f3f;

int main(){
// freopen("data.in", "r", stdin);
    string s;
    while(cin>>s){
        int a=0, b=0, ab=0, ba=0, aba=0;
        for(int i=0; i<s.size(); i++){
            if(s[i]=='a') a++,ba++,aba++;
            else b++, ab++;
            ab = max(ab, max(a, b));
            ba = max(ba, max(a, b));
            aba = max(aba, max(ab, ba));
        }
        cout<<aba<<endl;
    }
    return 0;
}

标签:aba,ab,string,int,Nikita,877B,空串,ba
From: https://www.cnblogs.com/hellohebin/p/16722789.html

相关文章