设为首页 加入收藏

TOP

uva 12096 - The SetStack Computer(STL)
2015-07-20 17:50:31 来源: 作者: 【 】 浏览:2
Tags:uva 12096 The SetStack Computer STL

题目链接:uva 12096 - The SetStack Computer

题目大意:一个栈,有5种操作;

  • PUSH:向栈中放一个空集合。
  • DUP:复制栈顶集合。
  • UNION:取栈顶的两个集合,取并集后放回。
  • INTERSECT:取栈顶的两个集合,取交集后放回。
  • ADD:取栈顶两个集合,将第一个集合作为元素放到第二个集合中,并将第二个集合放回栈。

    每次操作后输出栈定集合中元素的个数。

    解题思路:将所有集合映射成一个值,用map记录,然后模拟操作即可。

    #include 
         
           #include 
          
            #include 
           
             #include 
             #include 
             
               #include 
              
                using namespace std; typedef set
               
                 sint; typedef set
                
                 ::iterator iter; int hn; stack
                 
                   stak; map
                  
                    g; void hashadd (sint u) { if (g.count(u)) return; g[u] = hn++; } void putsize () { if (stak.empty()) return; printf("%d\n", (int)stak.top().size()); } void sf_push () { sint u; hashadd(u); stak.push(u); } void sf_dup () { sint u = stak.top(); stak.push(u); } void sf_union () { sint f = stak.top(); stak.pop(); sint u = stak.top(); stak.pop(); for (iter i = f.begin(); i != f.end(); i++) u.insert(*i); hashadd(u); stak.push(u); } void sf_inct () { sint u; sint f = stak.top(); stak.pop(); sint s = stak.top(); stak.pop(); for (iter i = f.begin(); i != f.end(); i++) { if (s.count(*i)) u.insert(*i); } hashadd(u); stak.push(u); } void sf_add () { sint f = stak.top(); stak.pop(); sint s = stak.top(); stak.pop(); s.insert(g[f]); hashadd(s); stak.push(s); } void solve () { char order[10]; scanf("%s", order); switch (order[0]) { case 'P': sf_push(); break; case 'D': sf_dup(); break; case 'U': sf_union(); break; case 'I': sf_inct(); break; case 'A': sf_add(); break; } putsize(); } int main () { int cas, n; scanf("%d", &cas); while (cas--) { hn = 0; g.clear(); while (!stak.empty()) stak.pop(); scanf("%d", &n); while (n--) solve(); printf("***\n"); } return 0; }
                  
                 
                
               
              
             
           
          
         
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uva 1517 - Tracking RFIDs(STL+.. 下一篇C++变量的存储类别与作用域

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·switch520最新的地址 (2025-12-24 19:19:41)
·微信聊天功能使用了 (2025-12-24 19:19:39)
·websocket和普通的so (2025-12-24 19:19:36)
·Python中文网 - 人生 (2025-12-24 18:49:47)
·【整整648集】这绝对 (2025-12-24 18:49:44)