求助
查看原帖
求助
278066
想AC的蒟蒻楼主2020/11/8 14:55
using namespace std;
string s1[100001],s2[100001];
char e;
int n,q,k,l,p;
bool x[1000001];
bool solve()
{
	if(s1[p][0]=='!')
	{ 
	p++;
	if(solve())return 0;
	return 1;
	}
	if(s1[p][0]=='&')
	{
		p++;
		bool u=solve();
		p++;
		bool uu=solve();
		if(u&&uu)return 1;
		return 0;
	}
	if(s1[p][0]=='|')
	{
		p++;
		bool u=solve();
		p++;
		bool uu=solve();
		if(!u&&!uu)return 0;
		return 1;
	}
	else if(s1[p][0]=='x')
	{
		int t=1,r=0;
		while(s1[p][t]>='0'&&s1[p][t]<='9')
		{
		r=r*10+s1[p][t]-'0';t++;	
		}
		if(x[r])return 1;
		return 0;
	}
}
int main()
{
	freopen("expr.in","r",stdin);
	freopen("expr.out","w",stdout);
	do
	{
		cin>>s1[++k];
		scanf("%c",&e);
	}while(e!=10);
	for(int i=1;i<=k;i++)s2[i]=s1[k-i+1];
	for(int i=1;i<=k;i++)s1[i]=s2[i];
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&x[i]);
	scanf("%d",&q);
	while(q--)
	{
	    scanf("%d",&l);
		x[l]=!x[l];
		p=1;
		if(solve())printf("1\n");
		else printf("0\n");
		x[l]=!x[l];
	}
	return 0;
}```
2020/11/8 14:55
加载中...