MLE求助
查看原帖
MLE求助
158400
晴空一鹤楼主2020/11/24 21:21

不知道为什么会MLE6个点(看了很久还是不知道

#include<bits/stdc++.h>
using namespace std;
vector<int>q[500000];
int qqq[100001];
int aa[100001],lll;
char b[1000001];
int bc[1000001];
int cnt=0,cnt2=0; 
string a;
struct node
{
    int cnt;
    bool x;
}t,tt;
stack<node>qq;
void huo()
{
    tt=qq.top();
    qq.pop();
    t=qq.top();
    if(tt.x==1&&t.x==1)
    qq.top().cnt=0;
    if(tt.x==1&&t.x==0)
    {
    	qq.top().cnt=tt.cnt;
	}
	if(tt.x==0&&t.x==0)
	{
		q[qq.top().cnt].push_back(tt.cnt);
	}
	qq.top().x=tt.x|t.x;
}
void yu()
{
    tt=qq.top();
    qq.pop();
    if(tt.x==0&&qq.top().x==0)
    qq.top().cnt=0;
    if(tt.x==0&&qq.top().x==1)
    {
    	qq.top().cnt=tt.cnt;
	}
	if(tt.x==1&&qq.top().x==1)
	{
		q[qq.top().cnt].push_back(tt.cnt);
	}
	qq.top().x=tt.x&qq.top().x;
}
void ycl()
{
    cnt=1;
    for(int i=1;i<=cnt2;i++)
    {
        if(bc[i]<100010)
        {
            t.x=aa[bc[i]];
            q[cnt].push_back(bc[i]);
            t.cnt=cnt++;
            qq.push(t);
        }
        else
        {
            char t=b[bc[i]-100010];
            if(t=='|')
              huo();
            else
              if(t=='&')
                yu();
              else
              qq.top().x=!qq.top().x;
        }
    }
}
void inline pd(int x)
{
    for(int i=0;i<q[x].size();i++)
    {
    qqq[q[x][0]]=1;
    if(i>0)
    pd(q[x][i]);
    }
}
int main()
{
    getline(cin,a);
    for(int i=0;i<a.size();i++)
    {
        ++cnt2;
        while(i<a.size()&&a[i]!=' ')
        {
            if(a[i]=='x')
            {i++;
                while(i<a.size()&&a[i]!=' ')
                {
 
                     bc[cnt2]=bc[cnt2]*10+a[i]-'0';
                     i++;
                }
                break;
            }
            b[++cnt]=a[i++];
            bc[cnt2]=cnt+100010;
        }
    }
    int n,ql;
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>aa[i];       
    ycl();
   pd(qq.top().cnt);
	cin>>ql;
    for(int i=1;i<=ql;i++)
	{
	cin>>lll;
		if(qqq[lll])
		cout<<!qq.top().x<<endl;
		else
		cout<<qq.top().x<<endl;
	}
 
}
2020/11/24 21:21
加载中...