首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
uva12096 The SetStack Computer By sixleaves
时间:
2015-06-05 00:26:50
阅读:
114
评论:
0
收藏:
0
[点我收藏+]
标签:
代码
1
#include <
set
>
2
#include <
string
>
3
#include <vector>
4
#include <map>
5
#include <stack>
6
#include <iostream>
7
#include <algorithm>
8
#define
ALL(x) x.begin(), x.end()
9
#define
INS(x) inserter(x, x.begin())
10
11
using
namespace
std;
12
13
typedef
set
<
int
> Set;
14
map<Set,
int
> IDCache;
15
vector<Set> Setcache;
16
//
主要的想法是能想到用map<set<int>, int>这种数据结构来把集合映射成整数
17
//
关键实现在ID函数,对于给定的set<int>都能返回一个唯一编号、vector虽然不能保证元素的唯一性。
18
//
但是我们可以先对map进行检查来保证vector中元素的唯一性,这样每个元素就能唯一编号,刚好可以利用他们的整数索引。
19
//
其中set_union、set_intersection中得实现原理不是重点,先学会怎么用才是重点。
20
//
ID函数实现了对新的集合存储,并且
21
int
ID(Set x);
22
int
main() {
23
24
25
stack<
int
> s;
26
int
t, n;
27
string
op;
28
cin >> t;
29
while
(t--) {
30
cin >> n;
31
IDCache.clear();
32
Setcache.clear();
33
for
(
int
i = 0; i < n; i++) {
34
35
cin >> op;
36
if
(op[0] == ‘P‘) s.push(ID(Set()));
//
Set()就是空集
37
else
if
(op[0] == ‘D‘) s.push(s.top());
38
else
{
39
40
Set x1 = Setcache[s.top()]; s.pop();
41
Set x2 = Setcache[s.top()]; s.pop();
42
Set x;
43
if
(op[0] == ‘U‘) set_union (ALL(x1), ALL(x2), INS(x));
44
if
(op[0] == ‘I‘) set_intersection (ALL(x1), ALL(x2), INS(x));
45
if
(op[0] == ‘A‘) { x = x2; x.insert(ID(x1)); }
46
s.push(ID(x));
47
48
}
49
50
cout << Setcache[s.top()].size() << endl;
51
}
52
cout << "***" << endl;
53
54
}
55
return
0;
56
}
57
58
//
相当于数据库中得auto_increment, 返回一个唯一的ID值
59
int
ID(Set x) {
60
61
if
(IDCache.count(x))
return
IDCache[x];
62
Setcache.push_back(x);
63
return
IDCache[x] = Setcache.size() - 1;
64
65
}
uva12096 The SetStack Computer By sixleaves
标签:
原文地址:http://www.cnblogs.com/objectc/p/4553426.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!