1 条题解
-
0
#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
- 上传者