「單身狗」是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。
輸入第一行給出乙個正整數 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 ...