切換
舊版
前往
大廳
主題

ZeroJudge - e541: 10474 - Where is the marble 解題心得

Not In My Back Yard | 2019-11-25 12:43:59 | 巴幣 0 | 人氣 243

題目連結:


題目大意:
給定兩正整數 N 、 Q (N、Q ≦ 10000,當 N = Q = 0 時代表輸入結束),代表接著有 N 列輸入以及 Q 筆的詢問。

接著的 N 列每列給定一非負整數(不超過 10000),代表一個數列的內容。請將其排序後編號為 1 ~ N 。

再接著有 Q 列輸入,每列也給一非負整數(同樣也不超過 10000)。求此數有無在給定的數列之中。有的話,請輸出該數所在的編號位置;反之,請輸出該數字「not found」。輸出格式請參見範例輸出。



範例輸入:
4 1
2
3
5
1
5
5 2
1
3
3
3
1
2
3
0 0


範例輸出:
CASE# 1:
5 found at 4
CASE# 2:
2 not found
3 found at 3


解題思維:
題目就要求排序了,而且編號是依據排序後編的,而非排序前。因此不用額外多存新的資訊,只要存數值即可。

排完序後,對於每筆的詢問就用二分搜尋法(Binary Search)去找數字即可。有找到就輸出找到的位置;反之就輸出「not found」。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作