求助站外题
  • 板块学术版
  • 楼主Wang1006
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/5/5 22:06
  • 上次更新2023/10/28 02:05:14
查看原帖
求助站外题
525687
Wang1006楼主2022/5/5 22:06

如题,在洛谷能AC,在一本通上不知为何会WA。
求助大佬!!!
题目:洛谷 一本通
记录: 一本通记录 洛谷记录

#include<iostream>
#include<vector>
using namespace std;
string s;
int n;
struct AC{
	char f;
	int real;
	vector<int>v;
}a[10010];
void Load(int beg,int end,int lst){
	int flg0=0,flg1=0;
	for(int i=beg;i<=end;++i){
		if(s[i]=='0'){
			flg0=1;
		}
		if(s[i]=='1'){
			flg1=1;
		}
	}
	int j;
	if(flg0&&!flg1){
		for(int i=1;i<=10000;++i){
			if(!a[i].real){
				a[lst].v.push_back(i);
				a[i].real=1;
				a[i].f='B';
				j=i;
				break;
			}
		}
	}
	if(!flg0&&flg1){
		for(int i=1;i<=10000;++i){
			if(!a[i].real){
				a[lst].v.push_back(i);
				a[i].real=1;
				a[i].f='I';
				j=i;
				break;
			}
		}
	}
	if(flg0&&flg1){
		for(int i=1;i<=10000;++i){
			if(!a[i].real){
				a[lst].v.push_back(i);
				a[i].real=1;
				a[i].f='F';
				j=i;
				break;
			}
		}
	}
	if(beg==end)return ;
	Load(beg,(beg+end-1)/2,j);
	Load((beg+end-1)/2+1,end,j);
}
void dg(int k){
	for(int i=0;i<a[k].v.size();++i){
		dg(a[k].v[i]);
	}
	cout<<a[k].f;
}
int main(){
	cin>>n;
	cin>>s;
	Load(0,s.size()-1,0);
	dg(0);
}
2022/5/5 22:06
加载中...