求助
  • 板块学术版
  • 楼主point_fish
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/11/13 15:23
  • 上次更新2023/11/5 08:10:39
查看原帖
求助
215572
point_fish楼主2020/11/13 15:23

P7073 表达式(民间数据)

#include<bits/stdc++.h>
using namespace std;
long long n,t[1000005],e,data[1000005],date[1000005],o;
string s,s1;
stack <int> q;
int yi;
int main()
{
    getline(cin,s);
    cin>>n;
    int k=0;
    for(int i=1;i<=n;i++)
		cin>>t[i];
	for(int i=0;i<s.size();i++)
	{
		if(s[i]=='x')
		{
			s1[++yi]=char(t[s[i+1]-'0']+'0');
			data[s[i+1]-'0']=yi;
		}
		if(s[i]=='&' || s[i]=='|' || s[i]=='!') 	
		{
			s1[++yi]+=s[i];
		}	
	}
	int m;
	cin>>m;
	for(int u=1;u<=m;u++)
	{
		int jl;
		cin>>jl;
		if(s1[data[jl]]=='0') s1[data[jl]]='1';
		else s1[data[jl]]='0';
		for(int i=1;i<=yi;i++)
		{
			if(s1[i]>='0' && s1[i]<='1') {q.push(s1[i]-'0');}
			if(s1[i]=='&')
			{
				int a=q.top();
				q.pop();
				int b=q.top();
				q.pop();
				if(a==1 && b==1) q.push(1);
				else q.push(0);
			} 
			if(s1[i]=='|')
			{
				int a=q.top();
				q.pop();
				int b=q.top();
				q.pop();
				if(a==0 && b==0) q.push(0);
				else q.push(1);
			} 
			if(s1[i]=='!')
			{
				int a=q.top();
				q.pop();
				if(a==1) q.push(0);
				else q.push(1);
			}
		}
	date[u]=q.top();q.pop();
	if(s1[data[jl]]=='0') s1[data[jl]]='1';
		else s1[data[jl]]='0'; 
	}
for(int i=1;i<=m;i++)
cout<<date[i]<<"\n";
	return 0;
}

光荣爆0

2020/11/13 15:23
加载中...