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

注意: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. Asp.net core 2.0.1 Razor 的使用学习笔记(三)

    ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(二)—用户账户及cookie配置 修改用户账户及cookie配置 一.修改密码强度和用户邮箱验证规则 ...

  2. java中的 private Logger log=Logger.getLogger(this.getClass());

    this.getClass()得到什么? this 表示当前对象的引用: getClass() 是 java.lang.Object 中的方法,它返回一个对象的运行时类: this.getClass( ...

  3. 安装Java和Pycharm的步骤

    [root@nhserver1 usr]# java -versionjava version "1.7.0_25"OpenJDK Runtime Environment (rhe ...

  4. MySQL刷新事务日志级别设置

    标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 # if set to 1 , InnoDB will flush (fsync ...

  5. Install MongoDB on Linux Systems 速记

    下载mongodb最新版本: 下载链接:http://pan.baidu.com/s/1kTDnkyz curl -O http://downloads.mongodb.org/linux/mongo ...

  6. iOS-获取通讯录联系人信息

    头文件 #import <AddressBook/AddressBook.h> #import <AddressBookUI/AddressBookUI.h> 授权 关于通讯录 ...

  7. python基础 列表 的使用

    列表 首先定义一个列表 声明列表 列表名字=[值1,值2] list=[1,2,3,4,5] 这是一个列表,列表中有五个元素(1,2,3,4,5) 显示list列表 print   list 输出   ...

  8. vue 学习中 版本、问题集锦

    看学习视频,因为年份比较早了,其实vue早已迭代到vue2.0了,遇到一些问题: v-for遍历数组,获取索引 注意:在2.0版是1~10中,$index已废除,索引 (item,index). 如下 ...

  9. 洛谷3月月赛 R1 Step! ZERO to ONE

    洛谷3月月赛 R1 Step! ZERO to ONE 普及组难度 290.25/310滚粗 t1 10分的日语翻译题....太难了不会... t2 真·普及组.略 注意长为1的情况 #include ...

  10. Vue脚手架(vue-cli)安装总结

    单页Web应用(single page web application,SPA),就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序. 提供一 ...