zoukankan      html  css  js  c++  java
  • UVALive 3634 数据结构模拟

    这题真是坑啊,题意不明,其实就是往桟里面压入空的set集合,所以之前的询问大小都是只有0,只有add的时候,才会产生新的占空间的集合

    用stack和set直接进行模拟

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <set>
    #include <stack>
    #include <map>
    using namespace std;
    int cnt;
    set<int>s1,s2;
    stack<set<int> > s;
    map<set<int> , int> mp;
    void pop()
    {
        s1=s.top();
        s.pop();
        s2=s.top();
        s.pop();
    }
    void push()
    {
        set<int> tmp;
        s.push(tmp);
        puts("0");
    }
    void dup()
    {
        s.push(s.top());
        printf("%d
    ",s.top().size());
    }
    void uni()
    {
        pop();
        for (set<int>::iterator it=s1.begin();it!=s1.end();it++){
            s2.insert(*it);
        }
        s.push(s2);
        printf("%d
    ",s2.size());
    }
    void inter()
    {
        pop();
        set<int> s3;
        for (set<int>::iterator it=s1.begin();it!=s1.end();it++){
            if (s2.find(*it)!=s2.end()){
                s3.insert(*it);
            }
        }
        s.push(s3);
        printf("%d
    ",s3.size());
    }
    void add()
    {
        pop();
        if (s1.empty()){
            s2.insert(0);
        }
        else {
            if (!mp[s1]){
                mp[s1]=cnt++;
            }
            s2.insert(mp[s1]);
        }
        s.push(s2);
        printf("%d
    ",s2.size());
    }
    int main()
    {
        int t;
        scanf("%d",&t);
        char str[20];
        while (t--)
        {
            cnt=1;
            int m;
            scanf("%d",&m);
            while (!s.empty()) s.pop();
            mp.clear();
            while (m--)
            {
                scanf("%s",str);
                if (str[0]=='P') push();
                if (str[0]=='D') dup();
                if (str[0]=='A') add();
                if (str[0]=='U') uni();
                if (str[0]=='I') inter();
            }
            puts("***");
        }
        return 0;
    }
    

      

  • 相关阅读:
    nginx入门与实战
    python开发之virtualenv与virtualenvwrapper讲解
    Linux下的python3,virtualenv,Mysql、nginx、redis安装配置
    Linux系统基础优化及常用命令
    vim与程序员
    Shell基本命令
    Linux之文档与目录结构
    远程连接Linux
    oracle 根据时间戳查询date类型sql
    oracle 锁用户
  • 原文地址:https://www.cnblogs.com/kkrisen/p/3852235.html
Copyright © 2011-2022 走看看