题意:初始状态的栈内包含一个空集,对栈进行一下操作:

PUSH:向栈内压入一个空集

DUP:复制栈顶,并压入栈内

UNION:将栈顶端两个集合出栈,并将两个元素的并集入栈

INTERSECT:将栈顶端两个集合出栈,并将两个元素的交集入栈

ADD:将栈顶端两个集合出栈,将先出栈元素加入后出栈元素的集合中,而后入栈

对于每次操作,输出栈顶集合的元素数。

思路:声明一个栈st用来存放集合,声明多个堆用于表示集合,声明映射<set,int>表示集合编号,对于每次待入栈的集合进行编号查找工作,若已经有编号就将该编号入栈,否则赋予该集合一个编号,而后入栈。

对于并集操作使用:set_union()进行求解

对于交集操作使用:set_intersection()进行求解

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define INF 999999999 typedef set<int> Set;
map<Set,int>Map;
stack<int> st;
vector<Set> v; int Find(Set s)
{
if(Map.count(s))
return Map[s];
v.push_back(s);
return Map[s] = v.size()-;
} int main()
{
int T,n;
cin >> T;
string s;
while(T--)
{
cin >> n;
Map.clear();
v.clear();
while(!st.empty())
st.pop();
for(int i=;i<=n;i++)
{
cin >> s;
if(s[] == 'P')
{
st.push(Find(Set()));
}
else if(s[]=='D')
{
st.push(st.top());
}
else
{
Set s1 = v[st.top()];
st.pop();
Set s2 = v[st.top()];
st.pop();
Set temp;
if(s[]=='U')
{
set_union(s1.begin(),s1.end(),s2.begin(),s2.end(),inserter(temp,temp.begin()));
}
else if(s[]=='I')
{
set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),inserter(temp,temp.begin()));
}
else if(s[]=='A')
{
temp = s2;
temp.insert(Find(s1));
}
st.push(Find(temp));
}
cout << v[st.top()].size() << endl;
}
cout << "***" << endl;
}
return ;
}

The SetStack Computer UVA - 12096的更多相关文章

  1. set有关的函数的用法(The SetStack Computer UVA - 12096)

    #include<bits/stdc++.h> using namespace std; typedef set<int> Set; map<Set,int> ID ...

  2. 12096 - The SetStack Computer UVA

    Background from Wikipedia: \Set theory is a branch of mathematics created principally by the German ...

  3. UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用)

    UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用) 题意分析 绝对的好题. 先说做完此题的收获: 1.对数据结构又有了宏观的上的认识; 2.熟悉了常用STL ...

  4. uva 12096 The SetStack Computer

    点击打开链接uva 12096 思路: STL模拟 分析: 1 题目给定5种操作,每次输出栈顶集合的元素的个数 2 利用stack和set来模拟,set保存集合的元素.遇到push的时候直接在stac ...

  5. EOJ 1641/UVa The SetStack Computer

    Background from Wikipedia: “Set theory is a branch of mathematics created principally by the German ...

  6. UVa12096.The SetStack Computer

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  7. 集合栈计算机(The SetStack Computer, ACM/ICPC NWERC 2006,Uva12096)

    集合栈计算机(The SetStack Computer, ACM/ICPC NWERC 2006,Uva12096) 题目描述 有一个专门为了集合运算而设计的"集合栈"计算机.该 ...

  8. UVA12096 - The SetStack Computer(set + map映射)

    UVA12096 - The SetStack Computer(set + map映射) 题目链接 题目大意:有五个动作: push : 把一个空集合{}放到栈顶. dup : 把栈顶的集合取出来, ...

  9. uva 12096 - The SetStack Computer(集合栈)

    例题5-5 集合栈计算机(The Set Stack Computer,ACM/ICPC NWERC 2006,UVa12096) 有一个专门为了集合运算而设计的"集合栈"计算机. ...

随机推荐

  1. Spire.XLS,生成Excel文件、加载Excel文件

    一.组件介绍 Spire.XLS是E-iceblue开发的一套基于企业级的专业Office文档处理的组件之一,全称Spire.Office for .NET.旗下有Spire.Doc,Spire XL ...

  2. SSM框架整合环境构建——基于Spring4和Mybatis3

    目录 环境 配置说明 所需jar包 配置db.properties 配置log4j.properties 配置spring.xml 配置mybatis-spring.xml 配置springmvc.x ...

  3. Java代理模式之Cglib代理

    Cglib代理,也叫做子类代理.在内存中构建一个子类对象从而实现对目标对象功能的扩展. CGLIB包的底层是通过使用一个小而快的字节码处理框架ASM,来转换字节码并生成新的类.不鼓励直接使用ASM,因 ...

  4. 大白话 Scala 控制抽象

    2019-04-14 关键字: Scala.Scala控制抽象.Scala高阶函数 本篇文章系笔者根据当前掌握的知识对 Scala 控制抽象的教材知识总结,不保证文章所述内容的绝对.完全正确性. 在 ...

  5. Git-01-上传项目到github

    function fun1(){ Git上传项目到github Folder-->Git bash here Execute command: --git clone 仓库地址     多出一个 ...

  6. 「Algospot」龙曲线DRAGON

    一道考验思维的好题,顺便总结求第k大问题的常规思路: 传送门:$>here<$ 题意 给出初始串FX,每分形一次所有X替换为X+YF,所有Y替换为FX-Y.问$n$代字符串第$p$位起长度 ...

  7. beego框架开发投票网站(1) beego基础之运行逻辑

    本文档需结合beego官方文档食用 博主也仅仅是边学边记录,不保证内容的正确性,请当做通俗读物来看待 首先 beego是一个基于go语言的框架 其次 beego是一个mvc框架 框架可以理解为对底层又 ...

  8. vmware创建虚拟机不识别网卡

    今天在给虚拟机添加网卡的时候,出现了虚拟机不识别新加的网卡,很纳闷,连的一样的端口组,为什么新加的网卡识别不了呢 然后查看pci设备,发现网卡的驱动为 AMD 79C970 PCnet32- LANC ...

  9. ios端position为fixed失效的解决办法

    关键代码 document.getElementById("searchInputbox").addEventListener('touchmove', handler, {pas ...

  10. CF1157C1-Increasing Subsequence (easy version)题解

    原题地址 题目大意: