PAT1121:Damn Single
1121. Damn Single (25)
"Damn Single (单身狗)" is the Chinese nickname for someone who is being single. You are supposed to find those who are alone in a big party, so they can be taken care of.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (<=50000), the total number of couples. Then N lines of the couples follow, each gives a couple of ID's which are 5-digit numbers (i.e. from 00000 to 99999). After the list of couples, there is a positive integer M (<=10000) followed by M ID's of the party guests. The numbers are separated by spaces. It is guaranteed that nobody is having bigamous marriage (重婚) or dangling with more than one companion.
Output Specification:
First print in a line the total number of lonely guests. Then in the next line, print their ID's in increasing order. The numbers must be separated by exactly 1 space, and there must be no extra space at the end of the line.
Sample Input:
3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333
Sample Output:
5
10000 23333 44444 55555 88888
思路
给你n对情侣的代号以及一场派对的代号名单,找出名单中的单身狗(情侣中只要有一个没在也算),代号升序输出。
1.用一个isExist数组标记伴侣的存在,比如isExist[i] == 1 表示代号为i的人的伴侣也在派对上。
2.用couple数组关联两个人,guest数组记录在排队上的人。
3.遍历guest进行相关处理即可。
注意:1)用map关联一对情侣会超时,改用数组直接关联。
2)set的迭代器如果先被声明在循环外部(处理第一个数据的空格字符),然后再进入迭代循环会超时,所以得直接在迭代内部声明迭代器。
(这个问题不是很清楚出在哪,猜测可能跟迭代器的构造有关)
代码
#include <cstdio>
#include <set>
#include <vector>
using namespace std;
int main() {
int n, a, b, m;
scanf("%d", &n);
vector<int> couple(100000);
for (int i = 0; i < 100000; i++)
couple[i] = -1;
for (int i = 0; i < n; i++) {
scanf("%d%d", &a, &b);
couple[a] = b;
couple[b] = a;
}
scanf("%d", &m);
vector<int> guest(m), isExist(100000);
for (int i = 0; i < m; i++) {
scanf("%d", &guest[i]);
if (couple[guest[i]] != -1) {
isExist[couple[guest[i]]] = 1;
}
}
set<int> s;
for (int i = 0; i < m; i++) {
if (!isExist[guest[i]]) {
s.insert(guest[i]);
}
}
printf("%d\n", s.size());
for (set<int>::iterator it = s.begin(); it != s.end(); it++) {
if (it != s.begin())
printf(" ");
printf("%05d", *it);
}
return 0;
}
PAT1121:Damn Single的更多相关文章
- linux-关机出现Telling INIT to go to single user mode.无法关机
运行/sbin/shutdown now最后显示:Telling INIT to go to single user mode.INIT:Going single userINIT:Sending g ...
- [LeetCode] Single Number III 单独的数字之三
Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...
- [LeetCode] Single Number II 单独的数字之二
Given an array of integers, every element appears three times except for one. Find that single one. ...
- [LeetCode] Single Number 单独的数字
Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...
- First,FirstOrDefault,Single,SingleOrDefault的区别
操作符 如果源序列是空的 源序列只包含一个元素 源序列包含多个元素 First 抛异常 返回该元素 返回第一个元素 FirstOrDefault 返回default(TSource) 返回该元素 返回 ...
- 《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果(速度可实时)
最新的效果见 :http://video.sina.com.cn/v/b/124538950-1254492273.html 可处理视频的示例:视频去雾效果 在图像去雾这个领域,几乎没有人不知道< ...
- LeetCode Single Number I / II / III
[1]LeetCode 136 Single Number 题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数. 解法:容易想到异或的性质,两个 ...
- LeetCode——Single Number II(找出数组中只出现一次的数2)
问题: Given an array of integers, every element appears three times except for one. Find that single o ...
- [LeetCode] Single Number
Given an array of integers, every element appears twice except for one. Find that single one. Note: ...
随机推荐
- Android 获取某apk的签名信息,可用作防盗版进入。
转载请标明出处: http://write.blog.csdn.net/postedit/45721779作者:skay 一般项目中有防盗版的需求,必须是正版软件才能使用,这就需要获取当前安装包的签 ...
- 【Matlab编程】生日快乐歌(显示歌词)—matlab版
clear all A4=440;%标准音A4 不同的曲调音调不同scale的取值范围不同 pt=44100;p0=pt/2;%频率 scale=A4/2^(9/12)*2.^((-12:11)/12 ...
- Linux权限与命令间的关系
极重要!权限与命令间的关系: 我们知道权限对於使用者帐号来说是非常重要的,因为他可以限制使用者能不能读取/创建/删除/修改文件或目录! 在这一章我们介绍了很多文件系统的管理命令,第六章则介绍了很多文件 ...
- Global Financial Applications uses the following Public tables
来自文档: Oracle Financial Applications Technical Reference Manual 更多明细参考文档 Table Name ...
- 数据结构---队列C语言实现
#include <stdio.h> #include <stdlib.h> //队列大小 #define SIZE 1024 static int queue[SIZE] = ...
- Linux 系统应用编程——标准I/O
标准I/O的由来 标准I/O指的是ANSI C 中定义的用于I/O操作的一系列函数. 只要操作系统安装了C库,标准I/O函数就可以调用.换句话说,如果程序中使用的是标准I/O函数,那么 ...
- obj-c编程14:Cocoa和Cocoa Touch简介
这一篇篇幅相对少很多,几乎没有代码,全部都要靠本猫的语言组织能力啊!Cocoa框架在前面讲解F库时曾简单做过介绍,现在再具体说一说喽.各位童鞋是否已经发现鸟,前面所写的所有代码都是基于终端(或称之为c ...
- ELF 动态链接 so的动态符号表(.dynsym)
静态链接中有一个专门的段叫符号表 -- ".symtab"(Symbol Table), 里面保存了所有关于该目标文件的符号的定义和引用. 动态链接中同样有一个段叫 动态符号表 - ...
- Factor Pattern----工厂模式
一. 概念 工厂模式就是负责生成其他对象的类或方法,就是把创建对象的过程封装起来,这样随时可以产生一个新的对象,减少代码之间耦合. 二. 使用场景(原因) 工厂模式可以将对象的生产从直接new 一个对 ...
- 《转》xcode创建一个工程的多个taget,便于测试和发布多个版本
背景:很多时候,我们需要在一个工程中创立多个target,也就是说我们希望同一份代码可以创建两个应用,放到模拟器或者真机上,或者是,我们平时有N多人合作开发,当测试的时候,在A这里装了一遍测A写的那块 ...