Balloon

单身狗

时间限制:0.2秒
空间限制:64M


题目描述

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


输入描述

输入第一行给出一个正整数 N ( ≤ 50000 ) N(≤50000) N(50000),是已知夫妻/伴侣的对数;随后 N N N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 I D ID ID 号,为 5 5 5 位数字(从 00000 00000 00000 99999 99999 99999),ID 间以空格分隔;之后给出一个正整数 M ( ≤ 10000 ) M(≤10000) M(10000),为参加派对的总人数;随后一行给出这 M M M 位客人的 I D ID ID,以空格分隔。题目保证无人重婚或脚踩两条船


输出描述

首先第一行输出落单客人的总人数;随后第二行按 I D ID ID 递增顺序列出落单的客人。 I D ID ID 间用 1 1 1 个空格分隔,行的首尾不得有多余空格。


样例一

输入
3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333
输出
5
10000 23333 44444 55555 88888

题目分析

这是一道开心题(狗粮题),落单的客人有两种,一种是他对象没来,一种是他本身就是单身狗。

我们只需要记录每个人的对象的ID(初始值是-1,不能是0,因为有的ID是0),再记录都谁来了,就能看谁落单了。把落单的人记录下来,排个序就完事了。

注意事项

  • 这道题在PTA上,不能输出连续的两个空行。所以如果没有人落单,就不能输出两次换行。所以为了方便,输出完所有的落单人士后就不再输出换行了。
  • 注意ID是5位数字,小的ID需要前面补0

AC代码

#include <bits/stdc++.h>
using namespace std;
#define mem(a) memset(a, 0, sizeof(a))
#define dbg(x) cout << #x << " = " << x << endl
#define fi(i, l, r) for (int i = l; i < r; i++)
#define cd(a) scanf("%d", &a)
typedef long long ll;
int a[100010]; // 对象数组,没对象的都是-1(不是0)
bool came[100010]={0}; // 是否来过
int b[100010]; // 来了谁
int main()
{
    memset(a, -1, sizeof(a)); // 初始化为-1
    int N;
    cin>>N;
    while(N--)
    {
        int x,y;
        cd(x),cd(y); // scanf
        a[x]=y,a[y]=x; // x的对象是y,y的对象是x
    }
    cin>>N;
    fi(i,0,N)
    {
        cd(b[i]); // scanf
        came[b[i]]=true; // b[i]来了
    }
    vector<int>ans; // 落单人士集合
    for(int i=0;i<N;i++)
    {
        int thisPeople=b[i]; // 这个人是b[i]
        if(a[thisPeople]!=-1&&came[a[thisPeople]]); // 如果有女朋友并且女朋友来了,就不是落单
        else ans.push_back(thisPeople); // 否则就是落单了
    }
    cout<<ans.size()<<endl; // 落单总人数
    sort(ans.begin(),ans.end()); // 排序
    for(int i=0;i<ans.size();i++)
    {
        if(i)putchar(' '); // PTA上需要控制格式
        printf("%05d",ans[i]);
    }
    return 0;
}

原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/119295810

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐