PAT乙級1065單身狗 利用set的特點)

2021-10-25 16:06:08 字數 1442 閱讀 7811

1065 單身狗 (25 分)

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

輸入第一行給出乙個正整數 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

思路還是很簡單,但要全部通過還是要運用好set這個資料結構

1.首先建立couplelist(配偶表),我是用了map,為了兩個號碼可以互查,所以key和value要互換再存一次

2.對於每乙個號碼,若在配偶表沒有找到他的配偶,則他一定是單身狗

若配偶表裡他有物件,但物件沒來,則也是單身狗,關鍵就是怎麼樣判斷這種情況:我的思路建立乙個set裝入來的人,每乙個人,查他的配偶插入set裡,若插入成功(則說明set裡沒有配偶,仍為單身狗),若插入失敗(set的特性,重複元素插入則失敗),則說明來的人裡有他的配偶,則他 不是單身狗。這樣一次迴圈就可以判斷所有人的單身情況,見**

#include#include#include#includeusing namespace std;

int main()

cin >> m;

vectorcostoms(m);

cin.ignore();

getline(cin, input);

int index = 0,flag=0;

for (int i = 0; i < m; i++)

costoms[i].push_back(input[j]);

} st1.insert(costoms[i]); //建立比對庫

} string search;

for (int i = 0; i < m; i++)

auto t = st1.insert(search); //庫里有配對,判斷來的人裡有沒有配偶

if (t.second == true)

} cout << st.size() << endl;

int k = 0;

for (auto it : st)

return 0;

}

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 是已知夫妻 伴侶的對...