題意描述:
「單身狗」是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。
輸入格式:
輸入第一行給出乙個正整數 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
解題思路:bob: 這道題目標題看起來好刺激啊, 單身狗!!單身! 狗!5
10000 23333 44444 55555 88888
alice: (¦3」∠),(白眼,默默讀題)
bob: 落單的客人,題目解釋的不很清楚啊,看看樣例。
alice: 55555 有女朋友啊,怎麼也是落單人士?? [・ヘ・?]
bob: 55555, 他的女朋友是66666,(o(*≧▽≦)ツ她女朋友好六啊)。em…, 我知道了, 因為 66666 沒去參加派對,所以他就落單了。
alice: 原來是這樣,那落單人士就要分成兩種了,一種是純單身狗,一種是拋下伴侶獨自一人參加派對的。
bob: 對呀,再看下輸出,
隨後第二行按 id 遞增順序列出落單的客人。id 間用 1 個空格分隔,行的首尾不得有多餘空格。如果沒有落單的人士那不就皆大歡喜了,那我們第二行該怎麼輸出呢?
alice: 什麼也不輸出,沒有就是沒有唄。
bob: 你想寫python版本的還是c++的,你挑乙個,剩下的我寫吧。
alice: 都是你寫,o(*≧▽≦)ツ,讓你六。
bob: (¦3」∠)
**:
def
main()
: n =
int(
input()
)# 接收輸入的正整數 n
data =
# 用來儲存情侶之間的指向關係
for x in
range
(n):
# 依次讀入每對夫妻或者情侶的姓名
alice, bob =
(int
(x)for x in
input()
.split())
data[alice]
= bob
data[bob]
= alice
# 情侶雙方相親相愛,都認同互為對方情侶
m =int(
input()
)# 接收正整數 m, m 為參加派代的人數
guests =
[int
(x)for x in
input()
.split()]
# 接收所有參加派代的人的id, 以整數列表的形式儲存
guests.sort(
)# 對參加派對的人的id排序,因為題目中要求按落單人士的id增序輸出,所以在這裡先排序。
guests =
dict
(zip
(guests,
range
(len
(guests)))
) bachelors =
# 記錄落單人士的id
for x in guests:
#對於來參加派對的每個人
if x not
in data:
# 沒有伴侶或者丈夫或者妻子的 純 單身人士"".
format
(x))
# 格式化其id,並新增到落單人士中
else
:# 有 伴侶的
if data[x]
notin guests:
# 但是 伴侶 並為來參加 派對的 落單人士"".
format
(x))
(len
(bachelors)
)# 輸出所有落單人士的總數
iflen
(bachelors)
:# 如果有落單人士
(" "
.join(bachelors)
)# 按要求輸出他們的id
# 沒有落單人士請不要輸出空格之類的東西
if __name__ ==
'__main__'
: main(
)
易錯點:總結:python 版本用時#include
#include
#include
// 下文要使用vector容器
#define nn 100000 + 10
// 巨集定義, 方便下面定義陣列大小
using namespace std;
vector<
int> bachelors;
// 宣告乙個整數vector容器,即乙個整型的動態陣列
intmain()
scanf
("%d"
,&m)
;for
(int i=
0; i
++i)
for(
int i=
0; i
++i)
else}}
}printf
("%d\n"
, bachelors.
size()
);// 輸出落單人士的總數
if(bachelors.
size()
)printf
("%05d\n"
, bachelors[bachelors.
size()
-1])
;//最後乙個落單人士,輸出id和換行。
}// 這裡面怎麼沒有對落單人士的id進行排序呀 ?
// 我們在確定每個參加派對的人是否落單的時候就是按照ta們id遞增的順序進行的,所以
// bachelors中的id就是遞增的,無需再排序。
return0;
}
c++ 版本用時
最後:
以及:啷個哩個啷
1065 單身狗 25 分
單身狗 是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。輸入第一行給出乙個正整數 n 50 000 是已知夫妻 伴侶的對數 隨後 n 行,每行給出一對夫妻 伴侶 為方便起見,每人對應乙個 id 號,為 5 位數字 從 00000 到 99999 id 間以...
1065 單身狗 25 分
單身狗 是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。輸入第一行給出乙個正整數 n 50 000 是已知夫妻 伴侶的對數 隨後 n 行,每行給出一對夫妻 伴侶 為方便起見,每人對應乙個 id 號,為 5 位數字 從 00000 到 99999 id 間以...
1065 單身狗 25分
單身狗 是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。輸入第一行給出乙個正整數 n 50 000 是已知夫妻 伴侶的對數 隨後 n 行,每行給出一對夫妻 伴侶 為方便起見,每人對應乙個 id 號,為 5 位數字 從 00000 到 99999 id 間以...