求调
查看原帖
求调
1113058
hlcg楼主2024/10/24 17:49
#include<bits/stdc++.h>
#define int long long 
using namespace std; 
string w; 
char jsf[1000010]; 
int sm;
stack<int> sta; 
int ii=0,n; 
int jj=1;
struct lyl{
	int fa,l,r;
	bool sf; 
	char js;//0为无!
	bool gt; 
};

lyl a[1000010];
void get_arr(string a){ 
	int sam=0,p=0; 
	int l=a.size(); 
	for(int i=0;i<l;i++){ 
		if(a[i]=='x'){ 
			p=1; 
		}else{ 
		if(a[i]==' '&&p==1){
			sta.push(sam); 
			sam=0; 
			p=0; 
		}else{ 
			if(p==1){ 
				sam=sam*10+(a[i]-'0'); 
		}else{ 
			if(a[i]=='&'||a[i]=='|'||a[i]=='!'){ 	
				ii++; 
				jsf[ii]=a[i]; 
			} 
		}
	} 
	} 
	} 
}
int dfs(int x){
	if(a[x].js=='&'){
		if((a[a[x].l].sf&&a[a[x].r].sf)!=a[x].sf){
			a[x].sf=!a[x].sf;
			int t=dfs(a[x].fa);
			a[x].sf=!a[x].sf;
			return t;
		}else{
			return a[jj].sf;
		}
	}else{
		if((a[a[x].l].sf||a[a[x].r].sf)!=a[x].sf){
			a[x].sf=!a[x].sf;
			int t=dfs(a[x].fa);
			a[x].sf=!a[x].sf;
			return t;
		}else{
			return a[jj].sf;
		}
	}
}
signed main(){ 
	getline(cin,w); 
	get_arr(w); 
	cin>>n; 
	for(int i=1;i<=n;i++){ 
		cin>>a[i].sf; 
		a[i].l=0; 
		a[i].r=0; 
	}
	sm=n;
//	for(int i=1;i<=ii;i++){
//		cout<<jsf[i];
//	}
	while(sta.size()>1){
		if(jsf[jj]=='!'){
			a[sta.top()].gt=!a[sta.top()].gt;
			jj++;
		}else{
			if(jsf[jj]=='&'){
				n++;
				a[n].js='&';
				a[n].l=sta.top();
				a[sta.top()].fa=n;
				sta.pop();
				a[n].r=sta.top();
				a[sta.top()].fa=n;
				sta.pop();
				sta.push(n);
			}else{
				if(jsf[jj]=='|'){
				n++;
				a[n].js='|';
				a[n].l=sta.top();
				sta.pop();
				a[n].r=sta.top();
				sta.pop();
				sta.push(n);
				}
			}
		}
	}
	for(int i=1;i<=jj;i++){
		
		if(a[i].l==0&&a[i].r==0){
		}else{
			if(a[i].js=='&'){
				if(a[a[i].l].sf&&a[a[i].r].sf){
					a[i].sf=1;
				}else{
					a[i].sf=0;
				}
			}else{
				if(a[a[i].l].sf||a[a[i].r].sf){
					a[i].sf=1;
				}else{
					a[i].sf;
				}
			}
		}
		if(a[i].gt){
			a[i].sf=!a[i].sf;
		}
//		cout<<1;
	}
	int q;
	cin>>q;
	int xw;
	for(int i=1;i<=q;i++){
		cin>>xw;
		a[xw].sf=!a[xw].sf;
		cout<<dfs(a[xw].fa)<<endl;
		a[xw].sf=!a[xw].sf;
	}
	return 0;
}
2024/10/24 17:49
加载中...