1 条题解

  • 0
    @ 2026-7-10 11:11:07

    #include<bits/stdc++.h> using namespace std; string s1,s2; struct { int v; int a; int b; }; _ t; stack s3; stack<> s4; int r,l,a1,a2,b1,b2; int jb(char a) { if(a=='(') { return 0; } if(a=='&') { return 2; } if(a=='|') { return 1; } } int main() { cin>>s1; for(int i=0; i<s1.size(); i++) { if(s1[i]>='0'&&s1[i]<='1') { s2+=s1[i]; } else if(s1[i]'(') { s3.push(s1[i]); } else if(s1[i]')') { while(s3.empty()==0&&s3.top()!='(') { s2+=s3.top(); s3.pop(); } s3.pop(); } else { while(s3.empty()==0&&jb(s1[i])<=jb(s3.top())) { s2+=s3.top(); s3.pop(); } s3.push(s1[i]); }

    }
    while(s3.empty()==0) {
    	s2+=s3.top();
    	s3.pop();
    }
    for(int i=0;i<s2.size();i++){
    	if(s2[i]=='0'||s2[i]=='1'){
    		t.a=0;
    		t.b=0;
    		t.v=s2[i]-'0';
    		s4.push(t);
    	}
    	if(s2[i]=='&'||s2[i]=='|'){
    		r=s4.top().v;
    		a1=s4.top().a;
    		b1=s4.top().b;
    		s4.pop();
    		l=s4.top().v;
    		a2=s4.top().a;
    		b2=s4.top().b;
    		s4.pop();
    		if(s2[i]=='&'){
    			if(l==0){
    				t.v=0;
    				a2++;
    				t.a=a2;
    				t.b=b2;
    			}
    			else{
    				t.a=a1+a2;
    				t.b=b1+b2;
    			}
    		}
    		else if(s2[i]=='|'){
    			if(l==1){
    				t.v=1;
    				b2++;
    				t.b=b2;
    				t.a=a2;
    			}
    			else{
    				t.a=a1+a2;
    				t.b=b1+b2;
    			}
    		}
    		s4.push(t);
    	}
    }
    cout<<s4.top().v<<endl<<s4.top().a<<' '<<s4.top().b;
    return 0;
    

    }

    • 1

    信息

    ID
    15
    时间
    1000ms
    内存
    512MiB
    难度
    8
    标签
    递交数
    32
    已通过
    5
    上传者