WA+TLE求调
查看原帖
WA+TLE求调
785810
wyyybb楼主2024/10/16 13:01

代码:

#include <bits/stdc++.h>
using namespace std;
const int AND=-1,OR=-2,NOT=-3;
int p=0,n,q;

int compute(vector<int> expr,vector<int> &symbols ){
	while(p < expr.size()){
		if(expr[p] == AND) {
			expr.pop_back();
			int e1=expr.back();
			expr.pop_back();
			int e2=expr.back();
			expr.pop_back();
			expr.push_back(symbols[e1] & symbols[e2]);
		}
		if(expr[p] == OR) {
			expr.pop_back();
			int e1=expr.back();
			expr.pop_back();
			int e2=expr.back();
			expr.pop_back();
			expr.push_back(symbols[e1] | symbols[e2]);
		}
		if(expr[p] == NOT) {
			expr.pop_back();
			int e1=expr.back();
			expr.pop_back();
			expr.push_back(!symbols[e1]);
		}
		p++;
	}
	cout << expr[0] << endl;
}
int main(void){
	vector<int> expr,symbols;
	symbols.push_back(0);
	string s,s2;
	getline(cin,s);
	istringstream ss(s);
	while(ss >> s2){
		if(s2[0] == '&') {
			expr.push_back(AND);
		}
		if(s2[0] == '|') {
			expr.push_back(OR);
		}
		if(s2[0] == '!') {
			expr.push_back(NOT);
		}
		if(s2[0] == 'x') {
			expr.push_back(atoi(s2.c_str()+1));
		}
	}
	cin >> n;
	for(int i=0;i<n;i++){
		int x;
		cin >> x;
		symbols.push_back(x);
	}
	cin >> q;
	for(int i=0;i<q;i++){
		int r;
		cin >> r;
		symbols[r] = !symbols[r];
		compute(expr,symbols);
		symbols[r] = !symbols[r];
	}
	return 0;
}

评测记录

2024/10/16 13:01
加载中...