1. 程式人生 > 實用技巧 >2020.12.5--中國計量大學現代科技學院第四屆“中競杯”程式設計校賽(同步賽)

2020.12.5--中國計量大學現代科技學院第四屆“中競杯”程式設計校賽(同步賽)

B.字串魔法(easy)

題解:答案會是形如 AAAA...AAAABBBB...BBBB 這樣一段序列。此時我們將中間的 BBB...BBBAAA...AAA 使用魔法翻轉,即可得到一段字典序不下降的序列。所以我們需要統計每一段 AA...AA 或者 BB..BB 的長度。最後列舉第一段 AAA...AAA 的起點即可。(注意第一段 AAA..AAA 長度為零的情況)

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    string s,b;
    vector<int>str;
    cin
>>n; getchar(); cin>>s; b+=s[0]; int a=1; for(int i=0;i<n;i++) { if(i!=0&&s[i]!=s[i-1]) { str.push_back(a); b+=s[i]; a=1; } else a++; } str.push_back(a); int ct=0,k=0; for(int
i=0;i<b.size()-1;i++) { if(b[i]=='B'&&b[i+1]=='A'){ int num=str[i]+str[i+1]; if(i-1>=0)num+=str[i-1]; if(i+2<str.size())num+=str[i+2]; ct=max(ct,num); k=1; } } if(k==1)cout<<ct<<endl;
else cout<<s.size()<<endl; }

H

變換