紧急求助!!!本蒟蒻又打假了
查看原帖
紧急求助!!!本蒟蒻又打假了
443023
chenkuo楼主2022/10/6 22:25

这个代码超时不要紧,还没加优化,可是为什么答案错误,有大佬帮忙看看吗?

#include<iostream>
#include<cstdio>
#include<fstream>
#include<algorithm>
#include<cmath>
#include<deque>
#include<vector>
#include<queue>
#include<string>
#include<cstring>
#include<map>
#include<stack>
#include<set>
using namespace std;
map<string,bool>f;
string s;
struct asd{
	int left,right;
	string dx;
}tree[1000000],f1[1000000];
int n,m,x,a[10000000],z1,bh[1000000],z,t;
string jq(string s,int a){
	string y="";
	for(int i=a;i<=s.size()-1;i++){
		if(s[i]==' ') return y;
		y+=s[i];
	}
	return y;
}
void js(){
	int u=0,l=s.size()-1;
	while(u<=l){
		string o=jq(s,u);
		u+=o.size()+1; 
		if(o[0]=='x'){
			f1[++z1].dx=o;
			f1[z1].left=0;
			f1[z1].right=0;
			bh[z1]=0;
		}
		if(o=="!"){
			int head=z+1;
			tree[++z].dx=o;
			if(bh[z1]==0){
				tree[++z]=f1[z1--];
				tree[head].left=z;
			}else{
				tree[head].left=bh[z1--];
			}
			f1[++z1]=tree[head];
			bh[z1]=head;
		} 
		if(o=="&"||o=="|"){
			int head=z+1;
			tree[++z].dx=o;
			if(bh[z1]==0){
				tree[++z]=f1[z1--];
				tree[head].left=z;
			}else{
				tree[head].left=bh[z1--];
			}
			if(bh[z1]==0){
				tree[++z]=f1[z1--];
				tree[head].right=z;
			}else{
				tree[head].right=bh[z1--];
			}
			f1[++z1]=tree[head];
			bh[z1]=head;
		}
	}
	t=bh[1];
} 
bool qz(int l){
	if(tree[l].dx[0]=='x'){
		return f[tree[l].dx];
	}
	if(tree[l].dx=="!")	return !qz(tree[l].left);
	if(tree[l].dx=="&")	return qz(tree[l].left)&qz(tree[l].right);
	if(tree[l].dx=="|")	return qz(tree[l].left)|qz(tree[l].right);
}
int main(){
//	freopen("expr.in","r",stdin);
//	freopen("expr.out","w",stdout);
	getline(cin,s);
	js();
	cout<<t<<endl;
	for(int i=1;i<=z;i++){
		cout<<tree[i].dx<<" "<<tree[i].left<<" "<<tree[i].right<<endl;
	}
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		string k="x";
		k+=(char)(i+'0');
		f[k]=a[i];
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++){
		scanf("%d",&x);
		string k="x";
		k+=(char)(x+'0');
		f[k]=!f[k];
		printf("%d\n",qz(t));
//		cout<<(int)(qz(t))<<endl;
		f[k]=!f[k];
	}
}
2022/10/6 22:25
加载中...