• PAT 1065. 单身狗(25)


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

    输入格式:

    输入第一行给出一个正整数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
    

    以遍历的方式判断客人是不是有夫妻会导致最后两个测试点运行超时。

    直接将伴侣ID映射到数组上,省去遍历本体才CG

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 #include<ctype.h>
     5 #include<math.h>
     6 int cmp(const void *a,const void *b){
     7     return *(int*)a-*(int*)b;
     8 }
     9 int main(){
    10      int n;
    11      int a[100010]={-1};
    12      scanf("%d",&n);
    13      int temp1,temp2;
    14      for(int i=0;i<n;i++){
    15          scanf("%d %d",&temp1,&temp2);
    16          a[temp1] = temp2;
    17          a[temp2] = temp1;
    18      }
    19      int m;
    20      scanf("%d",&m);
    21      int b[100010];
    22      for(int i=0;i<m;i++){
    23          scanf("%d",&b[i]);
    24      }
    25      int c[100010];
    26      int h = 0;
    27      int i,j;
    28      int temp;
    29      int k;
    30      for(i=0;i<m;i++){
    31          if(a[b[i]]!=-1){
    32              temp = a[b[i]];
    33              for(j=0;j<m;j++){
    34                  if(b[j]==temp){
    35                      break;
    36                  }
    37              }
    38              if(j==m){
    39                  c[h++] = b[i];
    40              }
    41          }
    42          else{
    43              c[h++] = b[i];
    44          }
    45      }
    46      
    47      
    48      
    49      qsort(c,h,sizeof(int),cmp);
    50      printf("%d
    ",h);
    51      for(i=0;i<h;i++){
    52          if(!i)
    53              printf("%05d",c[i]);
    54          else
    55              printf(" %05d",c[i]);
    56      }
    57      
    58      
    59 } 
  • 相关阅读:
    QT 手式编译步骤
    Linux QT 连接 Sqlite数据库
    JDK_1.8的Windows和Linux环境下的下载与安装
    聚焦BPM弹窗
    SQL查重去重
    sql函数使用
    SQL游标
    转载:《TypeScript 中文入门教程》 2、枚举
    《TypeScript 中文入门教程》 1、基础数据类型
    转载:《TypeScript 中文入门教程》
  • 原文地址:https://www.cnblogs.com/lolybj/p/6477060.html
Copyright © 2020-2023  润新知