PAT乙級 單身狗

2021-10-19 13:09:18 字數 2188 閱讀 9054

題目描述

「單身狗」 是中文對於單身人士的一種愛稱。

本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。

輸入格式

輸入第一行給出乙個正整數 n,是已知夫妻/伴侶的對數;

隨後 n 行,每行給出一對夫妻/伴侶——為方便起見,每人對應乙個 id 號,為 5 位數字(從 00000 到 99999),id 間以空格分隔;

之後給出乙個正整數 m,為參加派對的總人數;

隨後一行給出這 m 位客人的 id,以空格分隔。

題目保證無人重婚或腳踩兩條船。

輸出格式

首先第一行輸出落單客人的總人數;

隨後第二行按 id 遞增順序列出落單的客人。id 間用 1 個空格分隔,行的首尾不得有多餘空格。

輸入樣例

311111 22222

33333 44444

55555 66666

755555 44444 10000 88888 22222 11111 23333

輸出樣例

510000 23333 44444 55555 88888

資料範圍

n ≤ 50 000

m ≤ 10 000

題解

stl:

解題步驟

先用map對每一對情侶進行相互對映;

再用set記錄要參加派對的人;

最後列舉所有set中的元素,若其配偶不在set中,則新增到ans中去;

#include

#include

#include

#include

using

namespace std;

int n, m;

vector ans;

unordered_map h;

set s;

intmain()

cin >> m;

for(

int i =

1; i <= m; i ++

)for

(auto

&x : s)if(

!s.count

(h[x]

)) ans.

push_back

(x);

cout << ans.

size()

<< endl;

bool flag =

true

;for

(int i =

0; i < ans.

size()

; i ++)if

(flag) cout << ans[i]

, flag =

false

;else cout <<

' '<< ans[i]

;return0;

}

錯解:測試點 2 段錯誤,然而找不出錯

#include

#include

#include

using

namespace std;

int n, m;

map h;

set s;

intmain()

cin >> m;

for(

int i =

1; i <= m; i ++

)for

(auto

&x : s)

if(s.

count

(h[x]))

cout << s.

size()

<< endl;

bool flag =

true

;for

(auto

&x : s)

if(flag) cout << x, flag =

false

;else cout <<

' '<< x;

return0;

}

pat 乙級 1065 單身狗

單身狗 是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。輸入格式 輸入第一行給出乙個正整數n 50000 是已知夫妻 伴侶的對數 隨後n行,每行給出一對夫妻 伴侶 為方便起見,每人對應乙個id號,為5位數字 從00000到99999 id間以空格分隔 之後...

PAT乙級 1065 單身狗 25

原題鏈結 單身狗 是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。輸入格式 輸入第一行給出乙個正整數n 50000 是已知夫妻 伴侶的對數 隨後n行,每行給出一對夫妻 伴侶 為方便起見,每人對應乙個id號,為5位數字 從00000到99999 id間以空格...

pat 乙級 1065 單身狗 25

時間限制 300 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 單身狗 是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。輸入格式 輸入第一行給出乙個正整數n 50000 是已知夫妻 伴侶的對...