2020.12.5--中國計量大學現代科技學院第四屆“中競杯”程式設計校賽(同步賽)
阿新 • • 發佈:2020-12-13
題解:答案會是形如 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(inti=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
變換 |