码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 12096 STL map set 的使用

时间:2014-08-15 17:24:09      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   strong   

set这个容器也是STL库的一员,并且在algorithm内直接有 set_union set_intersection  这样求并集交集的操作

 

map 最方便的地方就是 支持下标访问

举例说明 :

 1 #include<iostream>
 2 include<cstdio>
 3 #include<cstring>
 4 #include<vector>
 5 #include<map>
 6 #include<set>
 7 #include<algorithm>
 8 #include<string>
 9 
10 using namespace std;
11 
12 int main(void)
13 {
14     map<string,int> smap;
15     smap["Hello"]=3;
16     smap["World"]=1;
17     string ss;
18     cin>>ss;
19     cout<<smap[ss];
20     return 0;
21 }

 

 

上面的是 map的用法 特殊的地方只有 15 16 行       而且很好理解 ,不做解释了

map<string,int> 简单理解指的就是  把 string作为下标 数组内的元素为int  

实际上是建立起 key-value 的一个对应关系  0.0

 

 

下面是题目pdf :

uva.onlinejudge.org/external/120/12096.pdf

 

本题的思想就是 给每个集合一个独特的ID

同一个集合共享一个ID

代码如下

 1 #include<iostream>
 2 #include<string>
 3 #include<cstdio>
 4 #include<vector>
 5 #include<set>
 6 #include<stack>
 7 #include<algorithm>
 8 #include<map>
 9 
10 #define ALL(x) x.begin(),x.end()
11 #define INS(x) inserter(x,x.begin())
12 
13 using namespace std;
14 
15 typedef set<int> Set;
16 map<Set,int> IDcache;
17 vector<Set> Setcache;
18 
19 int ID(Set x)
20 {
21     if(IDcache.count(x)) return IDcache[x];
22     Setcache.push_back(x);
23     return IDcache[x]=Setcache.size()-1;
24 }
25 
26 int main(void)
27 {
28     stack<int> s;
29     int n;
30     int T;
31     cin>>T;
32     while(T--)
33     {
34         cin>>n;
35         while(n--)
36         {
37             char op[10];
38             scanf("%s",op);
39             if(op[0]==P)
40                 s.push(ID(Set()));
41             else if(op[0]==D)
42                 s.push(s.top());
43             else
44             {
45                 Set x1=Setcache[s.top()];s.pop();
46                 Set x2=Setcache[s.top()];s.pop();
47                 Set x;
48                 if(op[0]==U)
49                     //x=set_union(ALL(x1),ALL(x2),INS(x));
50                     set_union(ALL(x1),ALL(x2),INS(x));
51                 if(op[0]==I)
52                     //x=set_intersection(ALL(x1),ALL(x2),INS(x));
53                     set_intersection(ALL(x1),ALL(x2),INS(x));
54                 if(op[0]==A)
55                 {x=x2;x.insert(ID(x1));}
56                 s.push(ID(x));
57             }
58             cout<<Setcache[s.top()].size()<<endl;
59         }
60         cout<<"***"<<endl;
61     }
62     return 0;
63 }

 

 
 
 

UVA 12096 STL map set 的使用,布布扣,bubuko.com

UVA 12096 STL map set 的使用

标签:style   blog   http   color   使用   os   io   strong   

原文地址:http://www.cnblogs.com/VOID-133/p/3915014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!