我来翻译题解啦!
由于不是回文串的时候才能进行操作2,所以我们可以认为操作2是执行一次“啥都不干”。
如果 $s$ 是回文串(B1):
如果 $n$ 是奇数:
如果 $s$ 不是回文串(B2):
#include<cstdio>
using namespace std;
const int maxn=1000;
int te,n,cnt;char s[maxn+5];bool fl;
int main(){
for (scanf("%d",&te);te;te--){
scanf("%d%s",&n,s+1);fl=true;
for (int i=1;i<=n;i++) if (s[i]!=s[n-i+1]) fl=false;
if (fl){
cnt=0;for (int i=1;i<=(n>>1);i++) cnt+=(s[i]=='0');
if ((n&1) && s[n+1>>1]=='0') puts(cnt?"ALICE":"BOB");
else puts("BOB");
} else {
cnt=0;for (int i=1;i<=n;i++) cnt+=(s[i]=='0');
puts((n&1) && cnt==2 && s[n+1>>1]=='0'?"DRAW":"ALICE");
}
}
return 0;
}
如果只是用 cstdio 有 using namespace std 的必要吗(
@Node Sans
只是个人习惯 🤔
%%% 好啊,你做的好啊!
@Node Sans
怎么一股浓浓的敷衍气息