思路:检查某个客人是否有伴侣,如果有,伴侣是否也出现即可。

注意:0个单身狗的时候,不要输出多余的’\n’, 否则会出现格式错误。


AC代码

#include <stdio.h>
#include <string.h>
#include <map>
#include <string>
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
const int maxn = 1e5+5;
map<string, int> ID;
vector<string>gue;
vector<int>ans;
int p[maxn]; //伴侣编号
bool vis[maxn];
int id;

int getId(string a) {
    if(!ID.count(a)) {
        ID[a] = id++;
    }
    return ID[a];
}

void init() {
    ID.clear();
    id = 0;
    memset(vis, 0, sizeof(vis));
    memset(p, -1, sizeof(p));
}

bool cmp(int a, int b) {
    return gue[a] < gue[b];
}

int main() {
    init();
    char a[10], b[10];
    int n, m;
    scanf("%d", &n);

    for(int i = 0; i < n; i++) {
        scanf("%s%s", a, b);
        int u = getId(a);
        int v = getId(b);
        p[u] = v;
        p[v] = u;
    }
    scanf("%d", &m);
    for(int i = 0; i < m; i++) {
        scanf("%s", a);
        gue.push_back(a);
        if(ID.count(a)) {
            int u = getId(a);
            vis[u] = 1;
        }
    }
    for(int i = 0; i < m; i++) {
        if(!ID.count(gue[i])) {
            ans.push_back(i);
            continue;
        }
        int u = getId(gue[i]);
        int par = p[u];
        if(!vis[par]) ans.push_back(i);
    }
    sort(ans.begin(), ans.end(), cmp);
    printf("%d\n", ans.size());
    for(int i = 0; i < ans.size(); i++) {
        if(i == 0) {
            cout << gue[ans[i]];
        } else {
            cout << " " << gue[ans[i]];
        }
    }
    if(ans.size() > 0) printf("\n");
    return 0;
}

如有不当之处欢迎指出!

PAT乙级1065 map的更多相关文章

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

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

  2. PAT 乙级 1065 单身狗 (25 分)

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

  3. PAT乙级完结有感

    去年10月开始刷的题,拖拖拉拉的终于借这个假期刷完了,总的来说还是有点小激动的,毕竟,第一次刷完一个体系,在这之前,我在杭电.南阳.洛谷.leetcode.以及我们自己学校的OJ上刷过,但都没有完完整 ...

  4. PAT乙级:1069 微博转发抽奖 (20分)

    PAT乙级:1069 微博转发抽奖 (20分) 题干 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入 ...

  5. PAT乙级:1014 福尔摩斯的约会 (20分)

    PAT乙级:1014 福尔摩斯的约会 (20分) 题干 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk ...

  6. PAT乙级:1083 是否存在相等的差 (20分)

    PAT乙级:1083 是否存在相等的差 (20分) 题干 给定 N 张卡片,正面分别写上 1.2.--.N,然后全部翻面,洗牌,在背面分别写上 1.2.--.N.将每张牌的正反两面数字相减(大减小), ...

  7. PAT乙级:1076 Wifi密码 (15分)

    PAT乙级:1076 Wifi密码 (15分) 题干 下面是微博上流传的一张照片:"各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题 ...

  8. C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...

  9. PAT乙级真题及训练题 1025. 反转链表 (25)

    PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...

随机推荐

  1. python_如何对实例属性进行类型检查?

    案例: 在某项目中,我们实现了一些类,并希望能像静态语言那样对他们的实例属性进行类型检查 p = Person() p.name = 'xi_xi'         # 必须是str p.age = ...

  2. js设置定时器

    1,利用settimeout,语法: setTimeout(/*执行代码*/, /*毫秒*/);每过多少毫秒执行一次代码 <button id="sms">发送验证码& ...

  3. mysql主从配置主主配置

    一.     概述  MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步.主从模式.互相备份模式的功能.本文档主要阐述了如何在linux系 ...

  4. CopyOnWriteArrayList集合排序异常问题

    1.集合自定义排序实现 对List集合的自定义排序想必大家都知道要使用如下的方式,通过实现Comparator接口并实现compare方法来实现. /** * * @方法名 changeChain * ...

  5. Gsp

    Gsp 接触到了groovy开发,自然就接触到了gsp.在grails开发中,gsp作为Grails的视图技术,事实上, 不过是标准 HTML 加上一些提供动态内容的 Grails 标记而已. gsp ...

  6. php与HTML交互问题

    1.将表单中的action属性值设为PHP路径,则网页会跳转到这个网址 <html> <body> <form action="welcome.php" ...

  7. DNS服务器解析域名的过程

    最近在读许令波老师的<深入分析Java Web技术内幕>,算是对DNS服务器域名解析有个大体的理解,以下的内容来自个人对书中内容的整理 1.什么是域名解析? 当我们在浏览器的地址栏输入一个 ...

  8. 网卡bond技术

    概览: 目前网卡绑定mode共有七种(0~6)bond0.bond1.bond2.bond3.bond4.bond5.bond6 常用的有三种: mode=0:平衡负载模式,有自动备援,但需要&quo ...

  9. Html5五子棋

    1.效果图 2.代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...

  10. JavaScript中的类继承

    JavaScript是一个无class的面向对象语言,它使用原型继承而非类继承.这会让那些使用传统面向对象语言如C++和Java的程序员们感到困惑.正如我们所看到的,JavaScript的原型继承比类 ...