#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int a[maxn],b[maxn],c[maxn],st[maxn][21];
int query(int x,int y)
{
int lg=log2(y-x+1);
return min(st[x][lg],st[y-(1<<lg)+1][lg]);
}
signed main()
{
int t;
cin>>t;
for(int p=1;p<=t;p++)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(st,0,sizeof(st));
int n,cnt=0;
cin>>n;
int lst=0;
for(int i=1;i<=n;i++)
{
char c;
cin>>c;
if(c=='B')
{
a[++cnt]=i-lst-1;
lst=i;
}
}
a[++cnt]=n-lst;
//cout<<cnt<<endl;
//for(int i=1;i<=cnt;i++) cout<<a[i]<<' ';
//cout<<endl;
//system("pause");
//return 0;
for(int i=2;i<=cnt;i++)
if(a[i-1]>=2) b[i]=i-1;
else b[i]=b[i-1];
for(int i=cnt-1;i>=1;i--)
if(a[i+1]>=2) c[i]=i+1;
else c[i]=c[i+1];
for(int i=1;i<=cnt;i++) st[i][0]=a[i];
for(int j=1;j<=20;j++)
for(int i=1;i+(1<<(j-1))<=cnt;i++)
st[i][j]=min(st[i][j-1],st[i+(1<<(j-1))][j-1]);
int ans=0;
for(int i=1;i<=cnt;i++)
{
int ret=a[i];
if(b[i]&&query(b[i],i-1)) ret++;
if(c[i]&&query(i+1,c[i])) ret++;
ans=max(ans,ret);
}
cout<<ans<<endl;
}
}
/*
6
3
TBT
4
BBBB
5
TTTTT
7
BTTBTTB
10
TBBTBBTTTB
17
TTBTBTTBTBTTTBTTB
*/
样例都过了,自己造的数据也都过了,但还是0分,麻烦提供一下hack数据,谢谢