zoukankan      html  css  js  c++  java
  • PAT1121:Damn Single

    1121. Damn Single (25)

    时间限制
    300 ms
    内存限制
    65536 kB
    代码长度限制
    16000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    "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
    ", s.size());
        for (set<int>::iterator it = s.begin(); it != s.end(); it++) {
            if (it != s.begin())
                printf(" ");
            printf("%05d", *it);
        }
        return 0;
    }
    

      

  • 相关阅读:
    java.net.ConnectException: localhost/127.0.0.1:8088 Connection refused java程序员
    网络模式:GSM,WCDMA,CDMA2000什么意思 java程序员
    Spring contextConfigLocation java程序员
    src总结 java程序员
    广州天河软件园面试Java实习生时的一些面试题 java程序员
    纠结了好久的Android SDK无法更新问题 java程序员
    Android SDK 2.3/3.0/4.0/4.1 下载与安装教程 java程序员
    域名解析文件hosts文件是什么?如何修改hosts文件? java程序员
    安卓模拟器Android SDK 4.0.3 R2安装完整图文教程 java程序员
    SpringBoot+mongoDB实现id自增
  • 原文地址:https://www.cnblogs.com/0kk470/p/7910677.html
Copyright © 2011-2022 走看看