1065 單身狗 (25 分)

2022-03-19 14:07:24 字數 1999 閱讀 2038

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

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

//

思路是乙個陣列互相儲存代表夫妻的id

//乙個bool陣列來表示是否是單身狗

//如果spouse[id] == 0 代表一定是單身狗

//否則,bool[id] 先改成true

//如果bool[spouse[id]]為true,說明物件已經有了,就把cnt--,並且把它改為false

//第三個測試點過不去,可能會某個值出現了兩次,問題真是存疑

#includeconst

int maxn = 100000

;int spouse[maxn] = ;

bool isdog[maxn] = ;

intarr[maxn];

intmain()

scanf("%d

",&m);

int cnt = 0

;

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

else

else}}

//printf("%d",isdog[22156]);

printf("

%d\n

",cnt);

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

}//printf("%d",cnt);

return0;

}

//

第二個測試點過不去

#includeconst

int maxn = 100000

;int spouse[maxn] = ;

intmain()

scanf("%d

",&n);

int cnt = 0

;

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

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

}printf(

"%d\n

",cnt);

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

return0;

}

//

網友的答案

#includeconst

int maxn = 100000

;int spouse[maxn] = ;

#define blank -1

#define singed -2

#define single -3

intmain()

scanf("%d

",&n);

int cnt = 0

;

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

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

}printf(

"%d\n

",cnt);

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

return0;

}

1065 單身狗 25 分

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

1065 單身狗 25 分

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

1065 單身狗 25 分

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