美文网首页
PAT-B 1065. 单身狗(25)

PAT-B 1065. 单身狗(25)

作者: Rush的博客 | 来源:发表于2016-12-22 15:17 被阅读418次

传送门

https://www.patest.cn/contests/pat-b-practise/1065

题目

“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。
输入格式:
输入第一行给出一个正整数N(<=50000),是已知夫妻/伴侣的对数;随后N行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(<=10000),为参加派对的总人数;随后一行给出这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

分析

真是一道恶趣味的题,不过作为最后一道,难度倒是不大。
1.建立一个伴侣表,用每个人ID作为索引,在其索引下,存放夫妻/伴侣的ID;
举例来讲,若11111和22222互为伴侣,则table[11111]=22222,table[22222]=11111。
2.先把所有参加排队的宾客ID存到数组里面;
3.遍历宾客数组,查找对应伴侣表里面的伴侣是否能在宾客的数组找到,如果找不到,说明是单身狗,将其加入到单身狗的数组里面;
4.遍历宾客数组完成后,对单身狗数组排序(升序);
5.遍历输出单身狗数组。

注意:ID不足五位的,要用0补位,就这一个坑。

对了,还有,末尾不要输出一个换行符,容易有错。
强迫症是病,得治。

源代码

//C/C++实现
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int table[100000];

int main(){
    int n;
    scanf("%d", &n);
    int a, b;
    for(int i = 0; i < n; ++i){
        scanf("%d %d", &a, &b);
        //建立相互映射关系 
        table[a] = b;
        table[b] = a;
    }
    scanf("%d", &n);
    vector<int> v(n);
    vector<int> doge;
    for(int i = 0; i < n; ++i){
        scanf("%d", &v[i]);
    }
    for(int i = 0; i < n; ++i){
        vector<int>::iterator result = find(v.begin(), v.end(), table[v[i]]);
        if(result == v.end()){ //说明没找到他/她的伴侣 
            doge.push_back(v[i]); //单身狗的队伍又壮大了 
        }
    }
    sort(doge.begin(),doge.end());
    printf("%d\n", doge.size());
    for(int i = 0; i < doge.size(); ++i){
        if(i == 0){
            printf("%05d", doge[i]);
        }       
        else{
            printf(" %05d", doge[i]);
        }
    }
//  printf("\n");
}

相关文章

  • PAT-B 1065. 单身狗(25)

    传送门 https://www.patest.cn/contests/pat-b-practise/1065 题目...

  • PAT Basic 1065. 单身狗(25)(C语言实现)

    我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容。...

  • 『小说』-单身狗计划

    从前有一只狗,住在不谈恋爱会死星球。 因为它一直单身,大家都亲切的叫它单身狗。 单身狗到了25岁,还是没有找到对象...

  • 1065 单身狗 (25 分)

  • 1065 单身狗 (25 分)

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

  • 单身狗

    我是一只单身狗 没人爱的单身狗 我是一只单身狗 没人疼的单身狗 我是一只单身狗 注定单身的皮球 我是一只单身狗 但...

  • 论单身狗的自我修养

    作为一只资深的、母胎solo的单身狗,在这25年的光辉岁月里,我深刻地感受到了时代的变迁,以及作为一只单身狗的正确...

  • 狗年之单身狗之生无可恋-数码绘画

    狗年之单身狗之生无可恋01 狗年之单身狗之生无可恋02 狗年之单身狗之生无可恋03 狗年之单身狗之生无可恋04 狗...

  • PAT 1065 单身狗 (25 分)

    方法1 方法2

  • 单身狗才有的乐趣

    点进来你就输了,单身狗没有乐趣 点进来你就输了,单身狗没有乐趣 点进来你就输了,单身狗没有乐趣 言归正传,单身狗有...

网友评论

      本文标题:PAT-B 1065. 单身狗(25)

      本文链接:https://www.haomeiwen.com/subject/cffhvttx.html