70分求助 WAsub0 2
查看原帖
70分求助 WAsub0 2
867875
niveKmAI楼主2023/8/25 14:43
#include<bits/stdc++.h>
using namespace std;
long long t;
long long n;
string a;
char s[100100];
long long l[100100];
long long r[100100];
long long x=-1;
int main(){
	cin>>t;
	while(t--){
	memset(l,0,sizeof(l)); 
	memset(r,0,sizeof(r));
		cin>>n;
		cin>>a;
		for(int i=0; i<a.size(); i++){
			s[i]=a[i];
		}
		long long len=0;
		long long su=0;
		long long mx=0;
		long long cnt=0;
		if(n==1){
			if(s[0]=='T'){
				cout<<1<<endl;
				continue;
			}
			else{
				cout<<0<<endl;
				continue;
			}
			
		}
else{
	for(long long i=n-1; i>=0; i--){
			if(s[i]=='B'&&s[i-1]=='T'){
				cnt=i-2;
				while(s[cnt]=='T'&&s[cnt-1]=='B'){
					if(cnt-1<0){
						break;
					}
				    i=cnt;	
					r[cnt-1]=1;
					cnt-=2;
				}
			}
		}
		cnt=0;
		for(long long i=0; i<n; i++){
				if(s[i]=='B'&&s[i+1]=='T'){
					cnt=i+2;
					while(s[cnt]=='T'&&s[cnt+1]=='B'){
					if(cnt+1>=n){
						break;
					} 
					    i=cnt;
						l[cnt+1]=1;
						cnt+=2;
					}
				}
			}
		for(long long i=0; i<n; i++){
		    if(s[i]=='T'){
		    	su++;
			    if(x==-1){
			    	x=i;
				}
			}
			else{
				mx=max(mx,su+l[x-1]+r[i]);
				su=0;
				x=-1;
			}
		}
	}
	cout<<(long long)max(mx,su+l[x-1])<<endl;
	}
	return 0;
} 
2023/8/25 14:43
加载中...