2026-06-15 20:46:39
发布于:广东
我是真没脑子啊
#include<iostream>
#include<vector>
#include<string>
#include<stack>
#include<sstream>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
string s;
getline(cin,s);
int n;
cin>>n;
vector<int> init_val(n+1);
for(int i=1;i<=n;i++) cin>>init_val[i];
int q;
cin>>q;
vector<string> tokens;
stringstream ss(s);
string token;
while(ss>>token) tokens.push_back(token);
vector<int> val;
vector<int> sens_up;
vector<int> op;
vector<int> left,right,var_id;
vector<int> stk;
for(string tok:tokens){
if(tok[0]=='x'){
int idx=stoi(tok.substr(1));
val.push_back(init_val[idx]);
sens_up.push_back(1);
op.push_back(-1);
left.push_back(-1);
right.push_back(-1);
var_id.push_back(idx);
stk.push_back(val.size()-1);
}
else if(tok=="!"){
int a=stk.back();stk.pop_back();
val.push_back(!val[a]);
sens_up.push_back(sens_up[a]);
op.push_back(2);
left.push_back(a);
right.push_back(-1);
var_id.push_back(-1);
stk.push_back(val.size()-1);
}
else{
int b=stk.back();stk.pop_back();
int a=stk.back();stk.pop_back();
int vv,ss_val;
if(tok=="&"){
vv=val[a]&val[b];
ss_val=(sens_up[a]&&val[b])||(sens_up[b]&&val[a])?1:0;
}
else{
vv=val[a]|val[b];
ss_val=(sens_up[a]&&!val[b])||(sens_up[b]&&!val[a])?1:0;
}
val.push_back(vv);
sens_up.push_back(ss_val);
op.push_back(tok=="&"?0:1);
left.push_back(a);
right.push_back(b);
var_id.push_back(-1);
stk.push_back(val.size()-1);
}
}
int root=stk.back();
int original=val[root];
vector<int> var_sens(n+1,0);
stack<pair<int,int>> dfs;
dfs.push({root,1});
while(!dfs.empty()){
int u=dfs.top().first;
int s=dfs.top().second;
dfs.pop();
if(op[u]==-1){
var_sens[var_id[u]]=s;
continue;
}
int lc=left[u],rc=right[u];
if(op[u]==0){
int ls=(s&&val[rc])?s:0;
int rs=(s&&val[lc])?s:0;
if(lc!=-1) dfs.push({lc,ls});
if(rc!=-1) dfs.push({rc,rs});
}
else if(op[u]==1){
int ls=(s&&!val[rc])?s:0;
int rs=(s&&!val[lc])?s:0;
if(lc!=-1) dfs.push({lc,ls});
if(rc!=-1) dfs.push({rc,rs});
}
else{
if(lc!=-1) dfs.push({lc,s});
}
}
while(q--){
int x;
cin>>x;
cout<<(original^var_sens[x])<<"\n";
}
return 0;
}
这里空空如也





















有帮助,赞一个