• PAT A1121 Damn Single (25 分)——set遍历


    "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 (≤ 50,000), 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 (≤ 10,000) 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
    
     
     1 #include <stdio.h>
     2 #include <algorithm>
     3 #include <queue>
     4 #include <vector>
     5 #include <set>
     6 #include <map>
     7 using namespace std;
     8 const int maxn=100031;
     9 int couple[maxn]={0};
    10 vector<int> v;
    11 int peop[maxn]={0};
    12 int n;
    13 int main(){
    14     scanf("%d",&n);
    15     for(int i=0;i<n;i++){
    16         int cp,cp2;
    17         scanf("%d %d",&cp,&cp2);
    18         couple[cp]=cp2;
    19         couple[cp2]=cp;
    20     }
    21     scanf("%d",&n);
    22     for(int i=0;i<n;i++){
    23         int p;
    24         scanf("%d",&p);    
    25         peop[p]=1;
    26         v.push_back(p);
    27     }
    28     for(int i=0;i<n;i++){
    29         if(peop[v[i]]==1){
    30             if(peop[couple[v[i]]]==1 && couple[couple[v[i]]]==v[i]){
    31                 peop[v[i]]=0;
    32                 peop[couple[v[i]]]=0;
    33             }
    34         }
    35     }
    36     int cnt=0;
    37     for(int i=0;i<n;i++){
    38         if(peop[v[i]]==1){
    39             cnt++;
    40         }
    41     }
    42     printf("%d
    ",cnt);
    43     int num=0;
    44     sort(v.begin(),v.end());
    45     for(int i=0;i<n;i++){
    46         if(peop[v[i]]==1){
    47             printf("%05d",v[i]);
    48             num++;
    49             if(num!=cnt)printf(" ");
    50         }
    51     }
    52 }
    View Code

    注意点:一开始想用set和map,发现map其实就是一个大数组,还不如直接开个大数组。一开始题目理解错了,以为只要找给的人里是单身狗的就行,结果是有对象的对象没来也算单身,行吧

    ---------------- 坚持每天学习一点点
  • 相关阅读:
    file类中,命令记录
    Java中有多个异常, 如何确定捕获顺序(多个catch),先从上到下执行,判断异常的大小,如果包含捕到异常,就进入这个catch,后面的就不再执行
    try....fail....catch...Assert 模式的测试, fail是Junit中的功能
    java.io.FileNotFoundException异常,一是“拒绝访问”,二是“系统找不到指定路径”
    [1]IP地址查询
    支付宝地铁SDK使用失败记录
    食神
    【初等数论】 04
    【初等数论】 03
    【初等数论】 02
  • 原文地址:https://www.cnblogs.com/tccbj/p/10434281.html
Copyright © 2020-2023  润新知