这题真是坑啊,题意不明,其实就是往桟里面压入空的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\n",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\n",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\n",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\n",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;
}

  

UVALive 3634 数据结构模拟的更多相关文章

  1. 【12】python 栈型数据结构模拟、队列型数据结构模拟

    一.压栈操作模拟 #__author:"吉*佳" #date: 2018/10/21 0021 #function:栈 # 栈:即是先进后出的一种数据结构 # (1)模拟压栈操作 ...

  2. UVALive 4222 Dance 模拟题

    Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...

  3. UVALive 3971 Assemble(模拟 + 二分)

    UVALive 3971 题意:有b块钱.想要组装一台电脑,给出n个配件的种类,名字,价格,品质因子.若各种类配件各买一个,总价格<=b,求最差品质配件的最大品质因子. 思路: 求最大的最小值一 ...

  4. UVALive 6451:Tables(模拟 Grade D)

    VJ题目链接 题意:模拟输出表格 思路:模拟……很暴力 代码: #include <cstdio> #include <cstring> #include <cstdli ...

  5. UVALive - 6440(模拟)

    题目链接:https://vjudge.net/contest/241341#problem/G 题目大意:输入一个N,n次操作.对于第一种操作增加一个病人,告诉病人的t0,st0,r.第二种操作,在 ...

  6. UVALive 7327【模拟】

    题意: 每次方案一个或多个子序列: 每个子序列要整除m 认为分割不同,子序列边界的不同就是不同: 1246有4个 1246 12 46 124 6 12 4 6 思路: 先从整体考虑,因为取膜适用于加 ...

  7. UVALive 6833【模拟】

    题意: 算从左往右的值,先乘后加的值,数的范围<=9= =,然后根据满足的条件输出字符. 思路: 从左往右就是直接来了,先做乘法就是乘法两边的数字靠向右边那个,且左边那个为0,然后所有值一加就好 ...

  8. 2016 Asia Jakarta Regional Contest A - Confusing Date Format UVALive 7711 【模拟题】

    A - Confusing Date Format 题目大意:就是有六种日期格式,给你一个字符串,判断它能组成多少种可能的日期. 第一次WA是:1.没有判重,2.没有特判题目要求的数据,3.判断天数时 ...

  9. 数据结构(c语言版)代码

    第1章  绪论       文档中源码及测试数据存放目录:数据结构\▲课本算法实现\▲01 绪论  概述        第一章作为绪论,主要介绍了数据结构与算法中的一些基本概念和术语.对于这些概念术语 ...

随机推荐

  1. 吴裕雄--天生自然JAVAIO操作学习笔记:压缩流与回退流

    import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util ...

  2. ThinkPHP 3.2 生成静态页面

    1:在根目录下的全局index.php中加下面这行: define('HTML_PATH', './htm');//生成静态页面的文件位置 2:在项目的配置文件config.php中加下面这行: 'H ...

  3. Zabbix——自动监控

    zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管 ...

  4. C# log4net相关配置说明

    添加相关文件到工程 链接: https://pan.baidu.com/s/1o83Juo6 密码: inkg 下载附件, 把里的log4net.dll 和 log4net.config 复制到工程目 ...

  5. mac搭建nginx

    0.介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler ...

  6. Spring的JDBC的使用(配置和CRUD)

    导包: Spring的JDBC模板的使用 一.默认连接池 创建数据库 create database spring4; use spring4; create table account(id int ...

  7. log4j配置文件——hibernate

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j ...

  8. Linux学习总结《shell脚本》知识点关键-用好“过滤器”

  9. jquery实现常用UI布局

    tab html <div class="tab"> <ul class="tab-title"> <li class=" ...

  10. java流程控制语句要点

    java流程控制语句要点 一.java7增强后的switch switch语句后面的控制表达式的数据类型只能是byte.short.char.int四种整数类型,不能是boolean类型,java7以 ...