程式設計試題
准考證號碼:
姓名:
USB 號碼:
評分主機帳號:
下表供自行記錄評分結果
題目 評分 飛天桑妮 Sunny 地雷區 Mine 導線短路 Short 小米雷射 Laser 手續費 Fee 時間限制 1 秒 1 秒 0.2 秒 6 秒 2 秒 一 二 三 四臺北市
105學年度高級中學資訊學科能力競賽
注意事項
1. 本競賽採電腦線上自動評分,程式必須依規定上傳至評分主機。請嚴格遵守每一題目 所規定之輸出格式。若未遵守,該題將可以0分計算。 2. 本競賽賽採取全面回饋機制,程式上傳至評分主機後,將自動編譯並進行測試。視等 待評分題數多寡,該題測試結果及該題得分數將可於短時間內得知。程式可重複上傳 及評分,但同一題兩次上傳之間必須間隔二分鐘以上。每題最終分數以該題所有單次 評分結果之最高分計算。 3. 程式執行時,每組測試資料執行時間個別計時(以評分主機執行時間為準)。執行時間 限制如封面頁所示。程式執行超過執行時間視同未完成,該組測試資料得分將以0分計 算。每題可使用記憶體空間,除非題目另有規定,以512MB為限。 4. 本次競賽程式送審時須上傳原始程式碼 (.c, .cpp, .pas, .java),輸出入皆以標準輸入、標 準輸出進行。注意:所有讀寫都在執行檔的工作目錄下進行,請勿自行增修輸出入檔 的檔名或路徑,若因此造成評分程式無法評分,該次評分結果將以0分計算。 5. 本競賽每一題皆有不同難易度的測試資料,詳細配分及限制條件請詳各題題目說明。 6. 本競賽題目無需使用超長整數 (long long) 變數,請勿使用 long long 宣告變數。若因 為使用該資料型態造成程式編譯或執行錯誤,導致評分程式無法正確評分,該次評分 結果將以0分計算。7. 請用主辦單位分配的隨身碟備份原始程式碼,若因任何原因而需更換電腦時,僅能將 隨身碟內程式複製至新電腦,或下載已上傳至評分主機的程式碼。
8. 以 Java 程式語言撰寫程式者,請務必將 public class 以英文題目名稱命名,亦即 Sunny, Mine, Short, Laser 或 Fee(請注意大小寫)。若使用其他 class 名稱導致程式無 法編譯或執行,將以0分計算。
9. 若以非 C/C++/Pascal/Java 程式語言撰寫程式者,請事先告知監試人員,領取評分用隨 身碟。若要接受評分,需將程式編譯成可執行檔 (.exe)及原始檔案複製至評分用隨身 碟,交給監試人員送交評審評分。評分結果將以書面通知。
飛天桑妮
(Sunny)
問題描述 飛天桑妮是一隻運動神經很好的鼯鼠,她很喜歡在樹木間移動,尤其最愛從高處一躍 而下,享受滑翔的快感。她所居住的森林裡有 N 棵樹木,已知每棵樹 ti (1 £ i £ N) 的位 置 (xi, yi) 和高度 hi。桑妮的家 t1 位於 (0, 0),而桑妮的奶奶家 tN 位於 (10000, 10000) 的位置。這個週末她要去奶奶家,因而尋求你的協助。 從家裡前往奶奶家的旅程可定義為由 K (2 £ K £ N) 棵相異樹木構成的序列 p = [p(1) = 1, p(2), …, p(K) = N]。 由於桑妮想要快點到奶奶家,所以旅程後段的樹木不能比前段的樹木離桑妮家還近,也就 是 d(t1, tp(i+1)) ³ d(t1, tp(i)),其中 d(ti, tj) 表示兩棵樹 ti 和 tj 的直線距離。當桑妮從一棵較 高的樹 tp(i) 跳到下一棵樹 tp(i+1) 時,如果是由高到低,她就能使出滑翔絕技,享受樂趣。高度差越大,樂趣就越大,因此我們可以把樂趣值定為 max{0, hp(i) - hp(i+1)}。她希望這段
旅程中可以享受到最大的樂趣,因此想請你幫忙寫一個程式,計算所有可能的旅程中,最 大的樂趣值為多少。 以上圖為例,森林中有五棵樹,其位置和高度如圖所示。如果桑妮的旅程是 [1, 2, 3, 4, 5],則這段旅程的最大樂趣為 t3 到 t4 得到的樂趣值 300 – 100 = 200;如果旅程是 [1, 3, 5],則最大樂趣為 t3 到 t5 得到的樂趣值 300 – 150 = 150。旅程 [1, 3, 2, 5] 是不合理的, 因為 t2 比 t3 離桑妮家還要近。旅程 [1, 5] 是合理的 (記得飛天桑妮的運動神經很好嗎), 但最大樂趣值是 0。 t2 (3000, 1000) t1 (0, 0) t5 (10000, 10000) t3 (3000, 5000) t4 (8000, 7000) 100 300 50 100 150
輸入範例1 5 3000 1000 50 8000 7000 100 0 0 100 3000 5000 300 10000 10000 150 輸出範例1 200 輸入範例2 7 0 0 42 5726 1480 29359 6965 4467 5706 8148 3284 16828 6335 6503 19170 9962 492 2996 10000 10000 18468 輸出範例2 26363 評分說明 本題共有三組測試資料,每組可有多筆測試資料: 第一組測試資料 N £ 5,000,樹木t1, …, tN 輸入時已依和桑妮家的距離由近到遠排序, 共30 分; 第二組測試資料 N £ 5,000,共 30 分; 第三組測試資料 N £ 100,000,共 40 分。
地雷區
(Mine)
問題描述 國家防衛隊的防衛系統發現,敵國一夕之間在兩國交界區域佈下許多地雷,這種地雷 的特性是周圍均有感測裝置,只要觸發感測裝置就會引發地雷爆炸,而如果感測裝置上也 有其他地雷的感測裝置,就會引發連鎖感應而產生連環爆炸。 國家防衛隊已偵測到地雷的座標位置,並準備使用誘導彈引爆所有的地雷,你的任務 就是根據地雷的座標,並善加利用地雷的連鎖感應機制,讓國家防衛隊所需使用的誘導彈 數量越少越好。 若以a x b 表示地圖大小,並以座標(1, 1)表示 左上角位置。右圖即為一個8 x 10 的地圖,其中M 標 示地雷位置,其周圍灰色區域為感測裝置,只要誘導 彈命中地雷(3, 3)或(5, 5)或其周圍任一感測裝置, 就可以一次引爆這兩個地雷,但地雷(2, 9)及(5, 10) 各需一顆誘導彈加以引爆,所以一共只需要發射3 顆 誘導彈就可以引爆四個地雷。 輸入格式 第一列為三個正整數,以一個空白為間隔,其中前兩個正整數 a, b 代表地圖的大小, 第三個正整數 c 代表地雷數量。接下來有 c 列,每一列有兩個以空白為間隔的正整數 row,col 代表地雷的座標,座標不重複,1 ≤ row, col ≤ 10,000。 輸出格式 能成功引爆所有地雷所需最少誘導彈數量(一個正整數)。 輸入範例1 10 10 2 1 1 10 10 輸出範例1 2 輸入範例2 10 6 3 2 2 3 3 4 5 輸出範例2 1 1 2 3 4 5 6 7 8 9 10 1 2 M 3 M 4 5 M M 6 7 8 8 × 10 的地雷區域