我打了一份 FBI 树的代码,得到的结果是在洛谷全 WA,在 ACwing 和牛客上 AC,同时也通过了样例数据。
那么问题来了:是不是洛谷的什么地方出了问题?
附:提交结果(分别表示洛谷、ACwing、牛客上的提交结果)
以及提交的代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long lnt;
lnt n;
bool a[1030];
inline lnt read()
{
lnt x=0,f=1;
char ch=getchar();
while(ch<48 or ch>57){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>=48 and ch<=57){
x=(x<<3)+(x<<1)+ch-48;
ch=getchar();
}
return x*f;
}
void dfs(lnt l,lnt r)
{
lnt mid=(l+r)>>1;
//printf("l=%lld, r=%lld\n",l,r);
if(l==r)
{
if(a[l]==0) printf("B");
else printf("I");
return;
}
dfs(l,mid);
dfs(mid+1,r);
lnt tag=0,la=0;//tag=0表示B串,=1表示I串,=2表示F串。
for(lnt i=l;i<=r;++i){
if(i==l){
if(a[i]==0) tag=0;
else tag=1;
la=a[i];
continue;
}
if(a[i]!=la){
tag=2;
break;
}
}
switch(tag)
{
case 0:printf("B");return;
case 1:printf("I");return;
case 2:printf("F");return;
}
}
int main()
{
n=read();
lnt m=pow(2,n);
for(lnt i=1;i<=m;++i) a[i]=getchar()-48;
dfs(1,m);
return 0;
}