• 沒有找到結果。

107北市賽程式設計

N/A
N/A
Protected

Academic year: 2021

Share "107北市賽程式設計"

Copied!
10
0
0

加載中.... (立即查看全文)

全文

(1)

程式設計試題

准考證號碼:

姓名:

USB 號碼:

評分主機帳號:

下表供自行記錄評分結果

題目 評分 森林大火 Fire 勇者冒險 Adventure 表演節目 Show 幸運表格 Lucky 保護女王 Queen 時間限制 1 3 1 0.5 0.3秒 一 二 三 四 五 每題 得分 總分

/ 500

(2)

臺北市107學年度高級中學資訊學科能力競賽

.

注意事項

1. 本競賽採電腦線上自動評分,程式必須依規定上傳至評分主機。請嚴格遵守每一題目所 規定之輸出格式。若未遵守,該題將可以0分計算。 2. 本競賽賽採取全面回饋機制,程式上傳至評分主機後,將自動編譯並進行測試。視等待 評分題數多寡,該題測試結果及該題得分數將可於短時間內得知。程式可重複上傳及評 分,但同一題兩次上傳之間必須間隔二分鐘以上。每題最終分數以該題所有單次評分結 果之最高分計算。 3. 程式執行時,每組測試資料執行時間個別計時(以評分主機執行時間為準)。執行時間 限制如封面頁所示。程式執行超過執行時間視同未完成,該組測試資料得分將以0分計 算。每題可使用記憶體空間,除非題目另有規定,以512MB為限。 4. 本次競賽程式送審時須上傳原始程式碼 (.c, .cpp, .java),輸出入皆以標準輸入、標準輸 出進行。注意:所有讀寫都在執行檔的工作目錄下進行,請勿自行增修輸出入檔的檔名 或路徑,若因此造成評分程式無法評分,該次評分結果將以0分計算。 5. 本競賽每一題皆有不同難易度的測試資料,詳細配分及限制條件請詳各題題目說明。

6. 本競賽題目無需使用超長整數 (long long) 變數,請勿使用 long long 宣告變數。若因為 使用該資料型態造成程式編譯或執行錯誤,導致評分程式無法正確評分,該次評分結果 將以0分計算。

7. 請用主辦單位分配的隨身碟備份原始程式碼,若因任何原因而需更換電腦時,僅能將隨 身碟內程式複製至新電腦,或下載已上傳至評分主機的程式碼。

8. 以 Java 程式語言撰寫程式者,請務必將 public class 以英文題目名稱命名,亦即 Coding, Fight, Lock, Thief 或 Sakura(請注意大小寫)。若使用其他 class 名稱導致程 式無法編譯或執行,將以0分計算。

(3)

問題描述 森林大火是一種失去人為控制的森林燃燒現象,它在森林開放系統內發生,自由燃燒、 蔓延和擴展,對森林資源、生態系統和人類生活造成巨大損失和危害。常見的森林大火原 因有人為疏忽、故意縱火、火山爆發和火山碎屑雲,熱浪、乾旱和週期氣候轉變如聖嬰現 象都會戲劇性增加山火危機(以上資料參考微基百科)。 要控制森林大火的一種方式稱作是「隔離法」,透過在火場周圍設置防火線來阻止火 勢的蔓延。現在有一座森林發生了森林大火,政府決定採用隔離法來處理這個事件,不過 因為專業消防人員不足,他們一天只能夠處理一處火災現場,也就是只能把一處火災現場 以防火線進行隔離,無法處理的部份火勢則會朝上下左右繼續蔓延。請注意,相鄰的火點 會被視作為同一處火災現場。請你幫忙他們規劃,在損失最小的情況下,也就是未著火面 積最大的情形下,消防人員總共需要架設幾條防火線來控制火勢。 下圖(a)是一張森林的 2D 平面圖,紅色標示的地方為火點,共有兩個火場。消防員第 一天先在左邊的火場建築防火線,不過雖然左邊火勢得到了控制,右邊火場的火勢就增長 了,結果如圖(b) 所示。火勢增長的方式為向四個方向擴散。所以第二天要針對右邊的火 場進行隔離。隔離後的結果如圖(c)所示。整個救火的行動總共需要製作十條防火線。假 設森林的邊界已經有妥善的保護措施,所以邊界的部份不需要列入考慮。 (a) (b) (c) 輸入格式 第一列有兩個正整數,代表整個森林的大小 M 和 N (2<=M, N<=200)。第二列有一個正整 數 K,代表火點個數(1<=K<=M*N)。接下來 K 列,每列描述燃燒中火點座標,以兩個正 整數 X Y 來表示,中間以空白隔開。森林座標最左上角為(0, 0),右下角為(M-1, N-1)。 輸出格式 請輸出在最大森林區域得到確保的情況下,需要架設幾條防火線。 輸入範例1 10 10 2 0 0 5 5 輸入範例2(題目敘述) 4 8 5 0 1 1 1 0 7 1 7 2 7 輸入範例3 3 9 13 0 0 0 1 0 2 1 0 1 2 1 4 1 5 1 6 1 7

(4)

1 8 2 0 2 1 2 2 輸出範例1 8 輸出範例2 10 輸出範例3 13 評分說明 本題共有四組測試資料,每組可有多筆測試資料: 第一組測試資料,K=1,共 15 分。 第二組測試資料,K=2,彼此之間並不會相鄰,同時在消防隊封鎖的過程中並不會因 為火點擴散而連在一起。共 20 分。 第三組測試資料,K=3,彼此之間並不會相鄰,但火勢蔓延的過程中可能會有多處的 火災現場燃燒漫延後成為同一火場。共 20 分。 第四組測試資料,1<=K<=7,而且彼此之間並不會相鄰,同時在消防隊封鎖的過程中 並不會因為火點擴散而連在一起。共 20 分。 第五組測試資料,1<=K<=M*N,但在消防隊封鎖的過程中火災現場並不會因為火點 擴散而連在一起。共 10 分。 第六組測試資料,1<=K<=M*N,而且在火勢蔓延的過程中可能會有多處的火災現場 燃燒漫延後成為同一火場。共 15 分。

(5)

問題描述 冒險者萊恩在新手村訓練即將屆滿一年,他詢問師父,什麼時候才能離開新手村,到 外面的世界冒險。師父聽聞,拿出一張世界地圖,用手指了地圖的一個位置。 「萊恩,我們在這裡,這是新手村。你想到哪裡去呢?」 萊恩很興奮地說,「聽說迷霧森林很刺激,我想去那裡看看。」 師父又用手指了地圖上另一個位置,「這裡就是迷霧森林。」接著,師父在地圖上雙 手揮舞,地圖上開始浮現許多數字。 「哇,好酷喔!師父,這些數字是什麼意思!」 「沒有數字的區域代表無法橫跨的沙漠,數字代表可行經區域裡的怪物等級;如果冒 險者的等級低於怪物等級,是沒辦法活著通過那個區域的。」 「啊!?」萊恩很仔細地看著地圖,慢慢地用手指帶出一條路線。「我如果從新手村 往北走,再往東走,這樣說起來,我得把我的等級提升到 5 級,才能到得了迷霧森林了。」 目前等級只有 4 級的萊恩低下頭。 5 2 2 4 3 5 霧 2 3 3 5 2 3 2 3 2 4 1 1 1 4 2 0 2 3 0 1 2 3 4 「別急,萊恩,看看這裡。」師父抓著萊恩的手指,你可以先往東走,再往北走,然 後往西抵達迷霧森林。這條路線,4 級的你就能辦到了。」 「喔耶!謝謝師父!」 真實冒險世界的地圖很大,需要你的幫忙。請你寫一個程式,給定地圖尺寸、新手村 和迷霧森林的位置,以及地圖上區域的怪物等級,計算出萊恩最少需要幾等級,才能從新 手村出發,安全抵達迷霧森林。 東 西 南 北

(6)

輸入格式 1. 第一行有兩個正整數 R 和 C (1 £ R, C £ 1000),代表地圖有幾列與幾行。 2. 第二行有四個整數 Rs, Cs, Rd, Cd (0 £ Rs, Rd < R,0 £ Cs, Cd < C),其中 (Rs, Cs) 代 表新手村的位置,(Rd, Cd) 代表迷霧森林的位置。新手村和迷霧森林很安全,裡 面必定沒有怪物。新手村和迷霧森林不會在同一個位置。 3. 第三行有一個整數 N (0 £ N £ R×C),代表地圖中有幾個可以行經的區域。 4. 接下去有 N 行,第 i 行有三個整數值 Ri, Ci, Li (0 £ Ri < R,0 £ Ci < C,1 £ Li £ 109),分別代表區域座標和該區域怪物等級。 5. 輸入中,任兩個整數間以一個空白隔開。 輸出格式 輸出萊恩最少需要為幾等級,才能從新手村出發,平安抵達迷霧森林。(測試資料保 證存在至少一條從新手村到迷霧森林的路。) 輸入範例1(題目敘述) 6 5 1 1 4 3 18 0 0 2 0 1 3 1 0 1 1 2 1 1 3 4 1 4 2 2 0 3 2 1 2 2 4 4 3 1 3 3 2 5 3 3 2 3 4 3 4 1 3 4 2 5 4 4 2 5 2 2 5 3 2 輸入範例2 3 4 0 1 1 3 10 2 0 5 2 1 4 2 2 2 2 3 1 1 0 5 1 1 7 1 2 6 0 0 5 0 2 9 0 3 8 輸出範例1 4 輸出範例2 5 評分說明 本題共有三組測試資料: 第一組測試資料 1 £ R, C £ 10,新手村到迷霧森林只存在一條路徑,共 46 分。 第二組測試資料 1 £ R, C £ 100,共 23 分。 第三組測試資料 1 £ R, C £ 1,000,共 31 分。

(7)

問題描述 資訊能力競賽頒獎典禮將安排一定數量以上的社團進行表演。小朱是這次活動的總策 劃,由於臺北市有許多優秀的表演社團,他蒐集過去社團表演的數據,經統計分析後,初 步篩選出具有高人氣指標的社團,以及該表演的演出費用。請幫助小朱計算在不超過表演 總預算的前提下,可邀請表演的社團組合中,社團人氣指標總和最高為多少,並計算其表 演所需總費用。 輸入格式 第一行為二個以空白為間隔之正整數 a, N,分別代表「表演總預算 a 千元」(5 ≤ a ≤ 1,000),以及「可被邀請進行表演之社團數量 N」(1 ≤ N ≤ 1,000)。第2至第N+1行,分別 列出社團編號1至N相關資訊,每一行有兩個以空白為間隔的正整數,分別為該社團表演 的人氣指標 x (1 ≤ x ≤ 100) 及演出費用 y 千元 (1 ≤ y ≤ 100)。 輸出格式 輸出一行兩個整數 M, S,分別代表在表演總預算額度內,可邀請表演社團組合中, 社團人氣指標總和最高為 M,且該社團組合表演所需總費用需 S 千元。 輸入範例 1 5 3 16 1 58 4 47 3 輸出範例 1 74 5 輸入範例 2 7 6 16 2 36 1 85 2 23 2 30 1 66 2 輸出範例 2 217 6 評分說明 本題共有四組測試資料,每組可有多筆測試資料: 第一、二組測試資料,5 ≤ a ≤ 10,1 ≤ N ≤ 10,各 20 分; 第三、四組測試資料,5 ≤ a ≤ 1,000,1 ≤ N ≤ 1,000,各 30 分。

(8)

幸運表格

(Lucky)

問題描述 幸運表格是一種古老的遊戲,在 m x n 的表格中,每一個格子都被預先填入一個整 數;接著玩家需要在蒙眼的狀況下選定一個格子做為他的起始位置,之後這位玩家只能在 表格中「向右」或者「向下」移動,並且加上所有經過的格子上的整數數值,直到玩家的 移動超出這個 m x n 的表格;此時,玩家所經過的所有數值的總和即為他的「幸運數」。 您的任務是,給定一個 m x n 的表格,找出所有可能的幸運數中的最大值。 例如:在右圖一個 5 x 5 的表格中,每個格子分別被填 入一個整數值;接著,玩家從第二列第三欄的格子開始,依 序往「下」「下」「右」「下」「下」移動,接著離開這個表格, 則他的幸運數即為 8 – 6 + 7 – 3 + 4 = 10。然而,在這個例字 中,若要達到最大可能的幸運數,則玩家需要從第三列的第 一欄起始,接著往「右」「下」「右」「右」「下」「下」移動, 其所達到的幸運數為 15。 輸入格式 輸入的第一行有二個以一個空白符號隔開的正整數 m 和 n,代表表格的列數和行數。 接著 m 行中,每一行有 n 個空白符號隔開的整數,其中第 i 行的第 j 個整數,即代表 表格中第 i 列第 j 欄的格子上的數字。每一個格子中的整數,必定大於 -100 且小於 100。 輸出格式 請根據輸入的資料,輸出該個幸運表格所可能產出的最大幸運數。 輸入範例 1 2 2 5 -2 -3 1 輸出範例 1 4 輸入範例 2 5 5 -1 7 -8 10 -5 -4 -9 8 -6 0 5 -2 -6 -6 7 -7 4 7 -3 -3 7 1 -6 4 -9 輸出範例 2 15 評分說明 本題共有四組測試資料,每組可有多筆測試資料: 第一組測試資料 m = 2,n = 2,共 15 分。 第二組測試資料 2 < m = n ≤ 5,共 20 分。 第三組測試資料 5 < m = n ≤ 100,共 28 分。 第四組測試資料 5 < m ≤ 1000,5 < n ≤ 1000,共 37 分。

(9)

問題描述 P 國女王要出席重要典禮,她的護衛團決定在她周圍形成防護網,讓女王身處在護衛 群的深處。護衛隊長煩惱了很久,在護衛們都站定位的狀況下,他不知該如何判斷哪個位 置是所謂的「深處」。護衛隊長求教於女王身邊的大臣,一位聰明的大臣「圖基」思索多 日後,將他的發現告訴了護衛隊長。 圖基用上面的圖例解釋給護衛隊長聽;圖中的圓點代表護衛們的位置: 1. 首先,任意選取一條直線將護衛們均分為人數均等的 A 與 B 兩群,如圖 (一)。 2. 慢慢改變這條線的斜率,保持 A 與 B 的分群不變,直到該線碰到 A 中的某護 衛與 B 群中的某護衛為止,如圖(二);注意因為可沿順時針或逆時針方向改變直 線的斜率,所以恰有兩條可能的線。 3. 步驟 2 所找到二線的交點,極有可能是所求的「深處」,如圖(三) 之p。 圖基的話還沒說完,護衛隊長就拿著三張圖跑了出去,將圖丟給了王國的程式設計師, 並告訴他所有護衛的平面坐標,請他參考圖例寫程式計算「深處」位置。 王國的程式設計師拿到三張圖與護衛們的座標後,直接依 x 坐標將護衛們分為同等 人數的兩半 (x 坐標較小的為一群,x 坐標較大的為另一群),然後再求出上述步驟 3 的 交點。聰明的你應會發現,步驟 1 的均分直線選的不同的話,步驟 3 所求出的交點也可 能不同,而這樣的狀況就沒有所謂的深處;然而圖基來不及提醒護衛隊長這件事,王國的 程式設計師自然也不會知道了。 請寫一支程式,重現王國的程式設計師的計算結果。 輸入格式 第一行有一正偶數 n,代表護衛人數;接下來的 n 行,每行有兩個整數,分別表示 一護衛在平面上的 x 與 y 座標,此二整數以一空白分隔。護衛的 x 座標均不相同。另可 確定的是,護衛人數分為兩群後,每一群護衛皆有三人不共線的特性。 輸出格式 輸出 2 個數字,以一空白分隔,表示王國的程式設計師計算出的「深處」之 x 與 y 座標;兩數字皆須四捨五入至小數點後二位。 輸入範例一 8 2 2 1 0 -1 2 -2 -4 輸出範例一 0.50 -1.00 (一) (二) (三)

(10)

0 -2 -3 -4 5 0 3 -6 輸入範例二 6 -3 4 -1 0 1 1 3 2 4 -5 -2 -3 輸出範例二 0.18 -0.09 評分說明 本題共有三組測試資料,每組可有多筆測試資料: 第一組測試資料, 6 ≤ n ≤ 3,000,共 25 分。 第二組測試資料, 20,000 ≤ n ≤ 50,000,且以 x 坐標大小區分出的 A 與 B 兩群點, 各自凸包 (convex hull) 上的頂點數不超過 3000,共 40 分。 第三組測試資料 60,000 ≤ n ≤ 100,000,共 35 分。

參考文獻

相關文件

5、「選課系統資料庫」APP 程式撰寫與分析(8 小時) 6、「雲端電子書城」APP 程式撰寫與分析(8 小時) 7、「多益 TOEIC 單字學習系統」APP

(1) 請詳實填寫後,報名表紙本採郵寄方式,電子檔請以 Word

(三)使用 Visual Studio 之 C# 程式語言(.Net framework 架構)、Visual Studio Code 之 JavaScript 程式語言(JavaScript framework 架構) ,搭配 MS

{ 許多問題都是請受訪者以李克特尺度指出 其同意或不同意的程度,這些問題可以正

在撰寫網頁應用程式 HTML 的語法當中,以下何者錯誤?(A)&lt;a&gt;是用來製作超連結的標記(Tag) (B)HREF 是一個在&lt;a&gt;與&lt;/a&gt;中指定其他

多元就業開發方案社會型 3 年期計畫書撰寫格式

系組名稱 英文名稱 系所分則 實習或課程規定.

有關於 Java 程式語言,下列何者敘述不正確?(A)Java 程式語言透過 extends 提供多重繼承 (Multiple