首页 > 代码库 > 100722B
100722B
在stack里套set,然后每次根据他的操作,在set里操作,把括号hash,插入,输出set的size-1
#include<iostream> #include<set> #include<cstdio> #include<stack> #define ll long long #define st set<ll> using namespace std; stack<st>s; ll T,n,tot; char S[110]; int main() { cin>>T; while(T--) { cin>>n; while(!s.empty())s.pop(); for(int i=1;i<=n;i++) { scanf("%s",S); if(S[0]==‘P‘) { st x;x.clear(); x.insert(1); s.push(x); printf("%d\n",0); } if(S[0]==‘D‘) { st a;a.clear(); a=s.top(); ll temp=a.size()-1; s.push(a); printf("%d\n",temp); } if(S[0]==‘U‘) { st a=s.top();s.pop(); st b=s.top();s.pop(); for(st::iterator it=a.begin();it!=a.end();it++) b.insert(*it); s.push(b); printf("%d\n",b.size()-1); } if(S[0]==‘I‘) { st a=s.top();s.pop(); st b=s.top();s.pop(); st c;c.clear(); for(st::iterator it=a.begin();it!=a.end();it++) if(b.count(*it))c.insert(*it); s.push(c); printf("%d\n",c.size()-1); } if(S[0]==‘A‘) { st a=s.top();s.pop(); st b=s.top();s.pop(); st c;c.clear(); ll sum=0; for(st::iterator it=a.begin();it!=a.end();it++) {sum*=171;sum+=*it;} sum*=171; b.insert(sum); s.push(b); printf("%d\n",b.size()-1); } } printf("***\n"); } return 0; }
100722B
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。