AT_agc062_a [AGC062A] Right Side Character 对自己的警告--zhengjun

发布时间 2023-07-10 18:47:54作者: A_zjzj

自己推性质的能力是真的差。

  • 如果最后一个字符是 A,那么答案就是 A(分为全是 A 和存在 B 两种情况证明即可)

  • 否则如果最后一个字符是 B,检查是否会变为以 A 结尾

    • 如果原串为 AA...ABB...B 的话,答案为 B
    • 否则最后的 B 会不断减少直到前面的 A 成为最后一个字符

做了 1h 才做出来,需要引以为戒。

代码

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=3e5+10;
int T,n;
char a[N];
void get(){
	scanf("%d%s",&n,a+1);
	int cntB=0,cnt=0;
	for(int i=1;i<=n;i++)cntB+=a[i]=='B';
	for(int i=1;i<n;i++)cnt+=a[i]!=a[i+1];
	if(!cntB)puts("A");
	else if(cntB==n)puts("B");
	else if(a[n]=='A')puts("A");
	else if(cntB>1&&cnt>1&&a[n]=='B')puts("A");
	else puts("B");
}
int main(){
	freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	for(scanf("%d",&T);T--;)get();
	return 0;
}