PAT乙級 1065 單身狗 25分

2021-10-09 22:53:14 字數 1538 閱讀 6318

「單身狗」是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。

輸入第一行給出乙個正整數 n(≤ 50 000),是已知夫妻/伴侶的對數;隨後 n 行,每行給出一對夫妻/伴侶——為方便起見,每人對應乙個 id 號,為 5 位數字(從 00000 到 99999),id 間以空格分隔;之後給出乙個正整數 m(≤ 10 000),為參加派對的總人數;隨後一行給出這 m 位客人的 id,以空格分隔。題目保證無人重婚或腳踩兩條船。

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

3

11111

22222

33333

44444

55555

66666

755555

44444

10000

88888

22222

11111

23333

5

10000

23333

44444

55555

88888

思路:注意題中的意思並不是有物件了就不輸出,而是只要是單人(包括有物件的)參加派對就可以輸出,因此這題就麻煩在對已有物件且單獨參加派對的人的處理。我們用乙個雜湊表people來表示是否有物件,p表示有物件的人是否在這派對裡,並且把一對夫妻用map**,因此我們只需要在**的map裡找出單獨出現的人即可。

#include

#include

#include

#include

using

namespace std;

intmain()

,p[100000]=

; vector<

int> v;

map<

int,

int> mp;

cin >>n;

for(

int i=

0;i) cin >>m;

for(

int i=

0;ifor(map<

int,

int>

::iterator it=mp.

begin()

;it!=mp.

end(

);it++)if

(!(people[it-

>first]

==false

&&people[it-

>second]

==false))

cout

(v.begin()

,v.end()

);for(

int i=

0;isize()

;i++

)printf

("%s%05d"

,i==0?

"":" ",v[i]);

return0;

}

PAT 乙級 1065 單身狗(25 分)

輸入第一行給出乙個正整數 n 50 000 是已知夫妻 伴侶的對數 隨後 n 行,每行給出一對夫妻 伴侶 為方便起見,每人對應乙個 id 號,為 5 位數字 從 00000 到 99999 id 間以空格分隔 之後給出乙個正整數 m 10 000 為參加派對的總人數 隨後一行給出這 m 位客人的 i...

PAT乙級 1065 單身狗(25分)

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

PAT乙級1065 單身狗 25分

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