台北市九十八學年度高中資訊學科能力競賽程式設計試題
13
0
0
全文
(2) 建國中學資訊科校內培訓第三次模擬競賽. 第 2 頁 共 13 頁. 注意事項 一、此競賽採部分電腦線上自動評分,因此參賽選手應嚴格遵守每一題目 所規定之目錄、執行檔、輸入檔、輸出檔之路徑、名稱及格式。若未 遵守,該題可以 0 分計算。 成績整理. 考場分配. 銷售房屋 II. 行雲流水. 錯字一哥. Score. Arrange. House2. Compose. Incorrect. 目錄. ---. ---. ---. ---. ---. 可執行檔. score.exe. arrange.exe. house2.exe. compose.exe incorrect.exe. 輸入檔. score.in. arrange.in. house2.in. compose.in. 輸出檔. score.out. arrange.out. house2.out. compose.out incorrect.out. 總分. 25. 25. 25. 題目. 25. incorrect.in. 25. 二、針對每一題所完成之程式,其每一筆測試資料的執行時間以 10 秒為限 。執行時間超過 10 秒者視同未完成,該筆測試資料將以 0 分計算。 所規定之目錄、執行檔、輸入檔、輸出檔之路徑、名稱及格式。若未 遵守,該題可以 0 分計算。 三、競賽結束後,參賽選手應在指定的時間內與評審 共同進行程式測試與評 審作業。 四、每一筆測試資料沒有部分給分,但每一題可以只答對部分的測試資料。. 建中校內培訓模擬競賽特殊規則: 一、比賽途中請將程式碼上傳到 http://math120908.infor.org/JudgeOnline/ 系統,比賽結束後將以最後一次上傳的程式碼為評分依據,逾期不以計 算。(注意:是上傳程式碼(.cpp)而非執行檔(.exe),請勿搞混) 二、比賽途中對題目有任何問題可以至上述網址發問,上述網址亦有備份 程式碼的功能,請隨時記得備份。 三、結束後會統一評測,方式為讀檔寫檔,請依照上方表格以及各題題目名 稱下方的輸出、輸出檔名作輸入、輸出。.
(3) 建國中學資訊科校內培訓第三次模擬競賽. 第 3 頁 共 13 頁. 題目一:成績整理(Score) 輸入方式:score.in 輸出方式:score.out. 問題描述 「耶!終於考完了!」伴隨著全校各年級學生的歡聲雷動,漫長的期 末考終於結束了,迎接而來則是歡樂的暑假時光。但是,對於學校的 行政人員以及各科的老師來說,問題卻未就此結束,甚至應該說,現 在才正是要開始忙碌的開端。 在讀卡機將各科的成績讀出來之後,各個老師便開始將這些成績與非 選擇題成績(如果有的話)加總,之後要做的事情就是很枯燥的將每 個班每位學生的期末考成績輸入至學校的成績登錄系統中,接著成績 登錄系統便會自己計算所有可能會用到的數值,以利各老師作各班學 習狀況調查時適當的參照。 然而,現在的教務處卻陷入了空前未有的混亂,原來,麻煩的事情發 生了──學校的成績登錄系統故障了……這下慘了,沒有了成績登錄 系統,各科老師們就沒有辦法統整成績了…… 為了解決這個窘境,教務主任想要請你幫幫忙,寫一個和成績登錄系 統差不多的程式來暫時先替代原本的系統。不過,功能不用太多,只 要能記錄、統整成績,並能夠算出各科、各班、各年級的平均分數和 分數的標準差就可以了。相關公式如下: 1. 平均分數公式: Score = 𝑛 標準差公式:. 𝜎=. 𝑛 𝑖=1 Score𝑖. 𝑛 2 𝑖=1 (Score 𝑖 −Score ). 𝑛. (Scorei 表示第 i 筆成績,共有 n 筆).
(4) 建國中學資訊科校內培訓第三次模擬競賽. 第 4 頁 共 13 頁. 輸入檔格式 (score.in) 每筆輸入檔都分成兩個部分。 第一部分為老師輸入的資料,每一行都包含了三個整數 Gi、Ci、Ni, 以及一個字串 Subji,最後是一個非負實數 Scorei,分別代表一名學生 的年級、班級、座號、科目,以及該科的成績(不會超過 100)。 第一部分以一個 * 獨立的一行作為結束。 第二部分則為老師的查詢,每一行都代表一次的查詢,含有多個字串 包含指令的兩個部分,第一部分為查詢種類: 1. Average:查詢平均分數(請輸出至小數點下第二位) 2. StdDeviation:查詢分數標準差(請輸出至小數點下第二位) 第二部分則為查詢對象,其中參數名稱包括:(參數不一定會全部出現) 1. Subject:指定科目(參數值為科目名稱) 2. Grade:指定年級(參數值為年級別) 3. Class:指定班級(參數值為班級編號) 概括起來,一次查詢的格式為: <查詢種類>_:_ <參數名稱 1>_<參數值 1>_<參數名稱 2>_<參數值 2>… (_ 代表空白,即 ASCII 值 32,真正的測試資料中不會出現_而是空白) 第二部分亦以一個 * 獨立的一行作為結束。. 對於所有出現的年級皆為 1 或 2 或 3。 對於每個年級,班級數皆不會超過 50。 對於每個班級,學生數皆不會超過 50。 出現的科目不會超過 12 科,且所有科目的名稱長度不會超過 50。 (科目名稱只會包含大小寫英文字母,不會有其他字元包括空白) 你可以假設對於所有詢問中的參數值都是合理的,意即每筆詢問必有 其對應到的資料(群)。 輸出檔格式 (score.out) 對於每筆輸入檔中的每次詢問,請根據輸入的資料輸出查詢的結果。.
(5) 建國中學資訊科校內培訓第三次模擬競賽. 第 5 頁 共 13 頁. 輸入檔範例 1 1 01 01 Math 100 2 01 01 Math 100 3 01 01 Physics 100 * Average : Subject Math StdDeviation : Subject Math *. 輸出檔範例 1 100.00 0.00. 輸入檔範例 2 1 01 35 Math 95.00 1 01 42 Math 90.00 1 01 01 Physics 95.00 1 02 23 Math 80.00 2 35 31 Chinese 75.00 2 35 32 Chinese 60.00 3 01 01 English 80.00 * Average : Subject Math Grade 1 Class 01 Average : Grade 1 Class 01 Average : Grade 2 Class 35 Subject Chinese Average : Subject English *. 輸出檔範例 2 92.50 93.33 67.50 80.00.
(6) 建國中學資訊科校內培訓第三次模擬競賽. 第 6 頁 共 13 頁. 題目二:考場分配(Arrange) 輸入方式:arrange.in 輸出方式:arrange.out. 問題描述 一年一度的台北市數理學科能力競賽又來到了,這次的考試場地是在 建中的科學館。各個學校在選完校隊之後,便開始幫同學培訓,而同 學也開始請公假去作練習。 得知了這個消息的建中學生,莫不感到特別高興(因為會有別校的正 妹來),但是參加比賽的選手就感覺到非常煩惱了,因為他們知道除 了因為建中科學館的設備等等不是很好之外,最重要的是場地根本就 小得可憐呀,這樣做實驗擠來擠去的不是超容易被別人看到你在做什 麼嗎? 特別是建中物理校隊的龍蝦,莫不感到非常煩惱,雖然這樣可以跟正 妹靠的比較近,可是因為他太強了,所以假如大家都抄他的怎麼辦呢 ?更何況物理是跟化學生物實驗比起來所需要場地最大的,就小小一 層的科學館真的能容那將近百人嗎? 去向胖胖老師(建中的籌辦人)訴苦的結果,胖胖老師決定要將同學 們盡量格開一點距離。假設一間教室是一個 n×m 大小的方格,每格代 表一個實驗桌與位子。然後經過多年的研究與統計計算之後,老師發 現每個人可以看到別人實驗的內容,大概是向前後兩格與向左右兩格 的距離,如下圖:. 所以不能安排一個人坐在另一個人前後左右兩個座位以內。而且麻煩 的是有些實驗桌或椅子已經學生被破壞掉了,所以這些位子也不能坐.
(7) 建國中學資訊科校內培訓第三次模擬競賽. 第 7 頁 共 13 頁. 人。為了不要浪費教室的空間,胖胖老師希望一間教室能越多人在一 起考越好,這樣可能可以少用到一兩間教室之類的。 不過胖胖老師對於計算一間教室最多能容納多少人很不擅長,所以想 請你幫幫忙,給你一個教室的平面圖,要你計算出這個教室最多能容 納多少考生。. ※註:以上故事純屬虛構,如有雷同,純屬巧合 XD。 ※題本編者註:以上故事純屬某郭姓講師虛構,如有雷同,請找他。. 輸入檔格式 (arrange.in) 對於每筆輸入檔,第一行有兩個正整數 n, m(n≦100 , m≦10)分別代 表教室的長寬。 接下來有 n 行每行 m 個字母,代表這個教室的平面圖,字母只有可能 是 Y 或 N。Y 代表這個位子可以坐人,N 代表這個位子已經被破壞不 能坐人了。. 輸出檔格式 (arrange.out) 對於每筆輸入檔,請輸出這間教室最多可以容納多少人。. 輸入檔範例 1 54 YNYY YYNN YYYY YNYY YNNY. 輸入檔範例 2 55 YYYYY YYYYY YYYYY YYYYY YYYYY. 輸出檔範例 1 6. 輸出檔範例 2 9.
(8) 建國中學資訊科校內培訓第三次模擬競賽. 第 8 頁 共 13 頁. 題目三:銷售房子 II(House2) 輸入方式:house2.in 輸出方式:house2.out. 問題描述 隨著不斷的努力,你升官了! 而且一升就停不下來,你直接升到了董事長的職位。 每當想起上任董事長的叮嚀時(註一),你就不禁熱淚盈框,決定要 盡自己最大的努力要把公司管理好。 首先,你重新劃分了公司的組織分佈,把每個員工都掛上一個編號, 自己的編號是 1。 然後又因為你很懶惰,不想管太多人,在一再刪減之下,每個員工最 多只有兩名手下。而也為了方便,編號 x 員工的兩名手下分別是編號 2x 和 2x+1。(注意:可能會只有一個手下或沒有手下) 而董事長的主要任務就是要分配房子,但積習難改,為了供應窮人跟 富人,你還是習慣把房子分成貴的跟便宜的(可以假設便宜那堆的所 有房子價錢皆小於貴的那堆),然後把便宜的那堆分給手下中編號較 小的,把貴的那堆給手下中編號較大的。(而你也規定所有員工這麼 做,如果只有一個手下的員工,那他不會把房子分堆) 而你在分房子之前,又會很貪心的把最貴的房子拿來自己住,而也因 為上行下效,所以底下的員工們也會在分房子之前也會先拿走一棟最 貴的。 而你覺得這樣每人所住房子的房價會形成一種完美平衡(註二)。 不幸的是,隨著地價變動,原本的完美平衡被破壞了。 為了讓它變回完美平衡,你要使用你龐大的影響力改變房價,由於懶 惰,你希望改變最少的房價就讓它變回完美平衡,所以希望能求出最 少是要改變多少棟房子的房價。.
(9) 建國中學資訊科校內培訓第三次模擬競賽. 第 9 頁 共 13 頁. (註一) 上任董事長:「拜託你放過我的家人們……」 (註二) 完美平衡舉例:. 輸入檔格式 (house2.in) 對於每筆測試資料,第一行有一個正整數 N(0<N≦3000000),代表總 共有多少個員工。 接下來有 N 個數字 Xi (0<Xi≦1000000000),代表第 i 個員工隨著地價 變動後他的房價變成多少。. 輸出檔格式 (house2.out) 對於每筆輸入檔,請輸出一個數代表你最少要改變多少個值才會形成 完美平衡。. 輸入檔範例 1 7 1361438. 輸入檔範例 2 3 222. 輸出檔範例 1 4. 輸出檔範例 2 1. 備註 範例測資 1 的一種可行方案:.
(10) 建國中學資訊科校內培訓第三次模擬競賽. 第 10 頁 共 13 頁. 題目四:行雲流水(Compose) 輸入方式:compose.in 輸出方式:compose.out. 問題描述 話說自從胖胖點考上了大學之後,就天天過著開心愉快的生活,到處 吃、到處玩、到處把妹(?)、……。在歡樂過一個暑假的時光後, 終於,學校開學了,胖胖點也該開始要好好念書了。 說是這樣說,可是各項活動有如一瀉千里、永不止息的長江水,滔滔 不絕的駛來,除了要忙著應付課業之外,還要參加比 ACM 還更 C 的 ACM-ICPC、比骨牌還難排的系排、比捉泥鰍還難捉的系桌、比跳芭 蕾還累的系壘……多到數不清的活動等著他。 不過即使再忙碌……,也要跟你喝杯咖啡?沒錯!即使胖胖點再忙碌 ,也還是不忘記把妹!最近他又看上了系上某個正妹,因此,再相處 了這麼久之後,胖胖點決定要向她告白>////<! 不過基於他害羞內向的個性,所以如果當面說,他一定口齒不清,說 得亂七八糟。因此他決定要寫封情書給那個正妹。想當然爾,一封令 人感動、使人終身難忘的情書並不好寫,因此他只能盡可能的將想說 的寫下來。但是這樣是不行的,因為有些段落是互相獨立的,而有些 段落是「直接相關」的(如果說 A 直接相關於 B,就代表說寫段落 A 前一定要先寫段落 B),如果隨便亂選幾段出來那將會文意不通順, 然後就會被正妹嘲笑跟討厭。 因此他最後將草稿分成了 n 個段落,而且每個段落最多僅有一個段落 直接相關於他(也就是要寫這個段落時,頂多只有一個段落一定要先 被寫),不過絕對不會出現寫 A 前要先寫 B、寫 B 前要先寫 C、且寫 C 前要先寫 A,這種環狀的順序關係出現。 然後他找了一個對愛情很擅長的學姊幫他看各個段落,並且給與評分 ,代表這個段落能使女生心動的「感動度」。當然了胖胖點希望他最 後湊出來的文章能夠感動度越高越好。不過那為什麼不乾脆全部都寫 呢?經學姐說明後,胖胖點知道,如果文章長度超過 m 段,那女生根 本不會想看下去,反而會覺得那個男生很討厭!.
(11) 建國中學資訊科校內培訓第三次模擬競賽. 第 11 頁 共 13 頁. 因此胖胖點決定要選 m 段出來,並且能夠文意通順(也就是滿足如果 A 直接相關於 B,且 B 被選取的話,A 也一定被選取),當然了最終 目的就是要使被選取的所有段落的感動度總和最大。 胖胖點求助於你,希望你能幫他求出最大可能的感動度,不知道你能 不能當他們兩個人的月下老人呢?. ※註:以上故事純屬虛構,如有雷同,純屬巧合 XD。 ※題本編者註:以上故事純屬某郭姓講師虛構,如有雷同,請找他。. 輸入檔格式 (compose.in) 對於每筆測試資料,第一行有兩個正整數 n、m(n≦1200 , m≦1200) 分別代表文章段落數量跟最後要選取的段落數量。 接下來有 n 行,每行有兩個非負整數 Ai、Vi,代表說 Ai 段直接相關 於第 i 段,如果 Ai=0 就代表沒有其他段落與他直接相關。Vi 則代表 寫這段的感動度。 輸出檔格式 (compose.out) 對於每筆輸入檔,請輸出一數代表這封情書最大可能的感動度。 你可以假設這個數字不會超過 231-1 (可用 32-bit integer 儲存)。. 輸入檔範例 1 74 22 01 04 21 71 76 22. 輸入檔範例 2 54 0 10 1 10 2 10 3 10 4 10000. 輸出檔範例 1 13. 輸出檔範例 2 40.
(12) 建國中學資訊科校內培訓第三次模擬競賽. 第 12 頁 共 13 頁. 題目五:錯字一哥(Incorrect) 輸入方式:incorrect.in 輸出方式:incorrect.out. 問題描述 話說段考剛結束,英文爆爛的胖胖郭這次又同樣一如往常的考爆了 Orz …,明明單字都有背,到了考場上卻又什麼都寫不出來,胖胖郭真的 覺得他的英文真是爛到某種境界,就算真的寫得出來,也常常是拼錯 字的。唉~英文不好真的非常麻煩。 而且最近每當有機會寫英文的時候,胖胖郭常常也因為寫錯字而被同 為胖胖軍團成員的胖胖天嘲笑:「天阿你真是錯字一哥耶……XD」, 諸如此類的話語,猶如重擊般一次一次的打在胖胖郭心上,使得胖胖 郭對於英文越來越缺乏自信。 因此他開始練習寫英文,不過假如只有自己練習的話根本沒辦法知道 自己到底寫對寫錯,因此找了胖胖老師來幫他改作文。熱心的胖胖老 師雖然說要幫胖胖郭改作文,可是他發現胖胖郭的作文實在是太難懂 了 Orz…,不但字常常拼錯,而且空白也不空好,常常字跟字連在一 起,讓他更難去分辨胖胖郭到底想表達什麼,例如說胖胖郭想說: “surwdkgo how way”,他通常會同時發生兩種情形: 1. 單字拼錯,每個單字都可能有機會重新排列,例如說會變這樣: “dogkruws ohw awy” 2. 空白忘記寫,所有文字都連在一起,例如說變成這樣: “dogkruwsohwawy” 即使是熱情之火可比太陽烈焰的胖胖老師,也覺得心有餘而力不足, 因此他找了另外一位英文+電腦高才生,幫他看說每段句子分別有可能 在說什麼東西。 不要懷疑,你就是那位英文電腦高才生!現在給你一個連在一起的字 串,與你所想得到的所有可能出現的單字,問你說這個字串原本應該 長什麼樣子?. ※註:以上故事純屬虛構,如有雷同,純屬巧合 XD。 ※題本編者註:以上絕非虛構,編者校稿時就快累死了(絕對不只英文)…….
(13) 建國中學資訊科校內培訓第三次模擬競賽. 第 13 頁 共 13 頁. 輸入檔格式 (incorrect.in) 第一行有一個字串代表說要你解讀的胖胖郭的作文,全文長度不超 過 5000,而且只可能出現小寫的英文字母。 第二行有一個數字 n(n≦10000)代表你所能想得到的所有可能出現 單字的數量。 接下來 n 行,每行有一個字串,分別代表所有你可能想到的單字(長 度皆不超過 100,且同樣一定只可能出現小寫英文字母)。 輸出檔格式 (incorrect.out) 請輸出胖胖郭可能寫的句子的原來面貌。 如果有很多種可能請輸出 ”Many possible answers!” (不含” ”)。 如果沒辦法由所想的單字猜出,則輸出 ”I don't know!!” (不含” ”)。. 輸入檔範例 1 dogkruwsohwawy 5 surwdkgo way how fat hotdog. 輸出檔範例 1 surwdkgo how way. 輸入檔範例 2 dogkruwsohwfat 3 hotdog how fat. 輸出檔範例 2 I don’t know!!. 輸入檔範例 3 dogkruwsohwfat 4 surwdkgo how fat howfat. 輸出檔範例 3 Many possible answers!.
(14)
相關文件
本題屬於難度較高的組合計算問題,如果能充分運用到數字運算及進位相 關性質,可以適度簡化計算過程。此次共有7位同學參與此題徵答,多數學 生均能將解答順利求出,特別是能提出許多不同的創意解法值得肯定。但是 相對也有部分同學在計算過程仍顯繁雜,有待精進。