acm 2034

人见人爱A-B

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 43070    Accepted Submission(s): 12081

Problem Description

参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。(当然,大家都知道集合的定义,就是同一个集合中不会有两个相同的元素,这里还是提醒大家一下)
呵呵,很简单吧?

Input

每组输入数据占1行,每行数据的开始是2个整数n(0<=n<=100)和m(0<=m<=100),分别表示集合A和集合B的元素个数,然后紧跟着n+m个元素,前面n个元素属于集合A,其余的属于集合B. 每个元素为不超出int范围的整数,元素之间有一个空格隔开. 如果n=0并且m=0表示输入的结束,不做处理。

Output

针对每组数据输出一行数据,表示A-B的结果,如果结果为空集合,则输出“NULL”,否则从小到大输出结果,为了简化问题,每个元素后面跟一个空格(坑).

Sample Input

3 3 1 2 3 1 4 7

3 7 2 5 8 2 3 4 5 6 7 8
0 0

Sample Output

2 3

NULL

Author

lcy

 1 #include <map>
 2 #include <iostream>
 3
 4 using namespace std;
 5
 6
 7 int main()
 8 {
 9
10     map<int,bool> setMapA;
11     int n,m,num;
12     while(cin >> n >> m)
13     {
14         if(m == 0 && n == 0)
15         {
16             break;
17         }
18         setMapA.clear();
19         for(int i = 0; i< n;i++)
20         {
21             cin >> num;
22             setMapA.insert(pair<int,bool>(num,true));
23         }
24
25         for(int i = 0; i< m;i++)
26         {
27             cin >> num;
28             setMapA[num] = false;
29         }
30
31         for(map<int,bool>::iterator cmp = setMapA.begin(); cmp != setMapA.end();)
32         {
33             if(!(cmp->second))
34             {
35                 setMapA.erase(cmp++);
36             }else
37             {
38                 ++cmp;
39             }
40         }
41
42         if(setMapA.size() == 0)
43         {
44             cout<<"NULL\n";
45         }else
46         {
47             int i = 0;
48             for(map<int,bool>::iterator cmp = setMapA.begin(); cmp != setMapA.end();cmp++)
49             {
50                 if(i != (int)setMapA.size() -1)
51                 {
52                     cout << cmp->first << " ";
53                 }else
54                 {
55                     cout << cmp->first << " \n";
56                 }
57                 i++;
58             }
59
60         }
61
62
63     }
64 }

map中使用erase函数,需要注意setMapA.erase(cmp++);这样先将cmp所指节点信息删除了,再将cmp节点向前指一个;
如果setMapA.erase(++cmp);删除了下个节点的信息,后面链断了的 情况,从而造成bug

acm 2034,布布扣,bubuko.com

时间: 07-16

acm 2034的相关文章

杭电 2034 人见人爱A-B

http://acm.hdu.edu.cn/showproblem.php?pid=2034 人见人爱A-B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 43093    Accepted Submission(s): 12090 Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{

hdu 2034人见人爱A-B

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2034 解题思路:set的基本用法 1 #include<iostream> 2 #include<string.h> 3 #include<stdio.h> 4 #include<set> 5 using namespace std; 6 7 int main() 8 { 9 int num1,num2,n; 10 while(scanf("%d %d

杭电ACM题目分类

杭电ACM题目分类 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028. 1029.1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092. 1093.1094.1095.1096.1097.1098.1106.1108.1157.1163.1164.1170.1194.1196. 1197.1201.1202.1205.1219.1234.123

FZU Problem 2034 Password table (简单模拟题)

这种简单题做了好长时间,我是不是有点逗? 地址:http://acm.fzu.edu.cn/problem.php?pid=2034 不解释了,自己看吧,练手的好题 上个代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include <stdio.h> #include <string.h> #include <stdlib.h>

HDOJ ACM题目分类

模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 120

《ACM/ICPC 算法训练教程》读书笔记一之数据结构(堆)

书籍简评:<ACM/ICPC 算法训练教程>这本书是余立功主编的,代码来自南京理工大学ACM集训队代码库,所以小编看过之后发现确实很实用,适合集训的时候刷题啊~~,当时是听了集训队final的意见买的,感觉还是不错滴. 相对于其他ACM书籍来说,当然如书名所言,这是一本算法训练书,有着大量的算法实战题目和代码,尽管小编还是发现了些许错误= =,有部分注释的语序习惯也有点不太合我的胃口.实战题目较多是比较水的题,但也正因此才能帮助不少新手入门,个人认为还是一本不错的算法书,当然自学还是需要下不少

acm常见算法及例题

转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题 初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法

推荐acm题目

杭电  http://acm.hdu.edu.cn/onlineuser.php. 浙大  http://acm.zju.edu.cn/onlinejudge/submit.do?problemId=1http://poj.org/status惟一的阿福 password:14420121 263273 14420121 学校原来网站      http://10.1.5.253:8080/acmhome/welcome.do?method=index

ACM比赛经验

ACM比赛经验: 推荐此篇文章打印,与模板放在一起. 1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果,必须开工其他题,如果WA,两道题同时做.交完每道题都要先打印. 2. 比赛时发的饭不是让你当时就吃的,那是给你赛后吃的.基本上比赛中前几名的队都没人吃,除非领先很多. 3. 很多选手,尤其是第一次参加比赛的,到一个新环境,全当旅游了,参观的参观,找同学的找同学,玩玩乐乐就把正事抛到脑后了,结果比赛自然没什么好成绩,这样的例子太多了.所以到参赛地后要时刻不