1065 单身狗(25 分)

“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。

输入格式:

输入第一行给出一个正整数 N(≤ 50 000),是已知夫妻/伴侣的对数;随后 N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),ID 间以空格分隔;之后给出一个正整数 M(≤ 10 000),为参加派对的总人数;随后一行给出这 M 位客人的 ID,以空格分隔。题目保证无人重婚或脚踩两条船。

输出格式:

首先第一行输出落单客人的总人数;随后第二行按 ID 递增顺序列出落单的客人。ID 间用 1 个空格分隔,行的首尾不得有多余空格。

输入样例:

3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333

输出样例:

5
10000 23333 44444 55555 88888

PS:看到这题目,当场去世!!!!

我的思路:首先录入伴侣的信息,然后当输入参加派对的那些人时,把他的key值置1,然后遍历一遍所有人,当满足单身狗条件时(本身key为1、伴侣的key为0),记录这组数据。随后输出就行。(显然我这里最后存储的时候用map就有点大材小用了,其实用set就行了,懒得加头文件和定义了)

注意:1、考虑当count为0的情况,否则测试点2会出现段错误,运行超时;

2、注意时间复杂度要低,否则测试点3、4运行超时。

#include<iostream>
#include<map>
#include<string>
using namespace std;
int main(){
map<string, pair<string,int>> s, res; //s用于判断是否单身
map<string, pair<string,int>>::iterator it;
int n, m, count = 0;
string r, l;
cin >> n;
while (n--) {
cin >> l >> r;
s[l].first = r; //存入伴侣信息
s[r].first = l;
}
cin >> m;
for (int i = 0; i < m; i++) {
cin >> l;
s[l].second++;
}
for (it = s.begin(); it != s.end(); it++) {
if (it->second.second && !s[it->second.first].second) { //逻辑判断:自己出席了会议,伴侣没有
count++; //记录单身狗数目
res[it->first].second++; //将符合条件的人存到res中
}
}
cout << count << endl;
if (count) { //注意count为0时,就不用输出ID了,否则测试点2出现段错误、运行超时
it = res.begin();
cout << it++->first;
for (; it != res.end(); it++) {
cout << " " << it->first;
}
}
return 0;
}

PAT 1065 单身狗(25)(STL-map+思路+测试点分析)的更多相关文章

  1. PAT 1065. 单身狗(25)

    “单身狗”是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数N(<=50000),是已知夫妻/伴侣的对数:随后N行 ...

  2. PAT 1025 反转链表 (25)(STL-map+思路+测试点分析)

    1025 反转链表 (25)(25 分) 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转.例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4:如果K为4, ...

  3. PAT (Basic Level) Practice (中文)1065 单身狗 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1065 单身狗 (25 分) 凌宸1642 题目描述: "单身狗"是中文对于单身人士的一种爱称.本题请你从上万人的大 ...

  4. PAT乙级 1065. 单身狗(25) by Python

    1065. 单身狗(25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue "单身狗"是中文对 ...

  5. PAT Basic 1065 单身狗 (25 分)

    “单身狗”是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数 N(≤ 50 000),是已知夫妻/伴侣的对数:随后 N ...

  6. PAT 1065 单身狗

    https://pintia.cn/problem-sets/994805260223102976/problems/994805266942377984 “单身狗”是中文对于单身人士的一种爱称.本题 ...

  7. 1065 单身狗 (25分)C语言

    单身狗"是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数 N(≤ 50 000),是已知夫妻/伴侣的对数:随 ...

  8. PAT——1065. 单身狗

    “单身狗”是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数N(<=50000),是已知夫妻/伴侣的对数:随后N行 ...

  9. PAT 1045 快速排序(25)(STL-set+思路+测试点分析)

    1045 快速排序(25)(25 分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分 ...

随机推荐

  1. 并发工具类(五) Phaser类

    前言   JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Ph ...

  2. OpenCL 管道

    ▶ 按书上写的管道的代码,需要使用 OpenCL2.0 的平台和设备,目前编译不通过,暂时不知道是什么问题,先把代码堆上来,以后换了新的设备再说 ● 程序主要功能:用主机上的数组 srcHost 创建 ...

  3. cmd查看电脑是32位还是64位

    代码如下 @echo off if "%PROCESSOR_ARCHITECTURE%" == "AMD64" (   echo OS is 64bit) EL ...

  4. CSS改变png图片颜色

    来源地址:http://www.zhangxinxu.com/wordpress/?p=5429 张鑫旭大神的个人网站上看到的,纯属分享和记录 css div.icon{height:20px;wid ...

  5. grep命令打印前N行

    想打印前5行,用head即可:grep xxx |head -n 5

  6. HTML网页Table解析

    procedure TForm27.Button1Click(Sender: TObject); var doc2: IHTMLDocument2; doc3: IHTMLDocument3; ita ...

  7. 五种方法实现Java的Singleton单例模式

    面试的时候经常会问到Java的单例模式,这道题能很好的考察候选人对知识点的理解程度.单例模式要求在系统运行时,只存在唯一的一个实例对象. 下面我们来详细剖析一下其中的关键知识点,并介绍五种实现方法,以 ...

  8. ios app 生命周期

    https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/The ...

  9. spring coud feign

    1. 依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>sprin ...

  10. Swift - JPush极光推送的使用3(根据Alias别名,给某个指定用户发推送)(转)

    一.别名(alias)介绍 (1)我们可以给每一个安装了应用程序的用户,取不同别名来标识(比如可以使用用户账号的 userid 来作为别名). (2)以后给某个特定用户推送消息时,就可以用此别名来指定 ...