PTA 7-28 单身狗 题解

PTA 7-28 单身狗 题解

没有什么难度和含金量的题,唯二需要注意的是:

  • \(\texttt{java}\) 的时空开销硕大,我目前试了多种方法都无法通过,于是改用 \(\texttt{C++}\)
  • 注意 \(\texttt{ID}\) 的范围与“ID为五位数”这句话!!!!!!!如果 \(\texttt{ID=1}\) 我们要输出 \(00001\) 满足五位!

满分代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;

int hum[maxn];
int vis[maxn];

int mp[maxn];

int main(){
    int n, m;
    cin >> n;
    
    memset(mp, -1, sizeof(mp));

    for(int i=1; i<=n; i++){
        int x, y;
        scanf("%d %d", &x, &y);

        mp[x] = y;
        mp[y] = x;
    }

    cin >> m;
    int num = 0;
    for(int i=1; i<=m; i++){
        int x;
        scanf("%d", &x);
        hum[i] = x;
        vis[x] ++;
        if(mp[x] == -1) num++;
        else if(vis[mp[x]] == 0) num++;
        else num--;
    }
    cout << num << endl;
    sort(hum+1, hum+1+m);
    int flag = 0;

    for(int i=1; i<=m; i++){
        int x = hum[i];
        if(vis[x] && vis[mp[x]]) continue;
        if(!flag) printf("%05d", x);
        else printf(" %05d", x);
        flag = 1;
    }
    return 0;
}   
posted @ 2024-10-22 15:18  [丘李]Chilllee  阅读(13)  评论(0)    收藏  举报