TOI 2012 入營考校內補選
esrever fenzhang jeremy89183 willyliu
February 24, 2012
規則
(1)使用程式語言C/C++; (2)禁止閱讀參考資料; (3)使用檔案I/O (檔名在題目右上角)
pE pF pJ pW
第一筆 第二筆 第三筆 第四筆 第五筆 第六筆 第七筆 第八筆 第九筆 第十筆 合計
總分: / 200
參賽者簽名: 評測者簽名:
1 Problem E: KMP
敘述
時限: 5s I/O檔名: (kmp.in / kmp.out)說到 key,認真寫程式的人可能會想到校內模擬賽中把妁艷綁在冥王星害他
微積分差點被當掉的鎖,熟悉密碼學的人可能會想到加密金鑰,喜歡玩Galgame 的人可能會想到「Rewrite: Harvest festa」。但是妁艷現在需要的,只是一把普通 的鑰匙──他被鎖在學校合作社的儲藏室裡了。至於為什麼的話,那又是另外一 個故事了。
妁艷估計現在已經是半夜了,所以他必須自己想辦法把鎖打開。這一點小事 當然難不倒妁艷,他非常熟悉一種稱作「鑰匙製作程序(Key Making Procedure)」
的東西,可以讓他在短時間內做出一把不錯的鑰匙。
• 鑰匙可以看成由N 塊鐵片所組成,我們可以用每一塊鐵片的大小組成的序 列描述這把鑰匙。由於鑰匙可以用來開鎖,我們也用長度為N 的序列來描 述一個鎖。
• 若一把鑰匙對於鎖是正確的,則對於所有的i,鑰匙序列中第i個數和第 i+ 1個數的大小關係必須和鎖序列一樣。
• 另外,每一把鑰匙都一個相容度,是序列中所有相鄰數對的差之和。當然,
不正確的鑰匙是開不了鎖的,但是如果相容度太低的話,就算是正確的鑰 匙還是有可能開不了鎖。
妁艷知道儲藏室門鎖的序列,也已經找到N 塊鐵片。為了避免做出來的鑰匙打 不開鎖,妁艷希望鑰匙的相容度越高越好。
你能幫助他找出最高的相容度是多少嗎?當然鑰匙要是正確的。
輸入
第一行有一個正整數N。
第二行有N 個正整數代表鎖序列。
第三行有N 個正整數代表妁艷找到的N 塊鐵片的大小。
範例輸入
10
9 5 1 2 6 7 4 18 20 12
10 40 20 30 50 70 80 100 1000 500
範例輸出
3010
限制
序列中的數字≤1,000,000,000 100%的測試資料N ≤300,000 50%的測試資料N ≤10
2 Problem F: Denpassible's Game
敘述
時限: 1s I/O檔名: (denpassible.in / denpassible.out) 大家都知道妤嬌天資聰穎,然而樹大招風。一天,天上頗有異相,地下蠢蠢欲動,
妤嬌感覺到有什麼要來了,忽然一陣大風驟起,捲起陣陣細沙,
出現在沙塵之後的人是:Denpassible(電波不可能)
Denpa 向妤嬌挑釁:「聽說你是常盤台中學中的魔人,我今天就是來挑戰你
的!」
妤嬌不甘示弱:「我是不會輸的,因為這已經是定數。說說看要比試什麻?」
比試的內容是這樣的:
一開始紙上有一個數字k,接下來先手要把k除以pn(p是prime 且n > 0)若且唯若k 被pn整除,接下來換後手把商數再做同樣 操作,再來先手把商數再做同樣操作…
直到不能動的人就輸了,也就是剩下1。
已知妤嬌是先手 (主場優勢),而且兩個人都是天才所以都知道對自己最有利 的方法。
妤嬌請你幫他們統計勝負數,沒想到他們玩得太快了(一場大概15ms),你只有 他們玩時剩下的紙條。
你能從這些紙條判斷出兩人分別勝利幾場嗎?
輸入
第一個正奇數t,代表總共有t張紙條接下來有t行,每行有一個正整數ki代
輸出
第一行輸出兩個數字e, d以一個空白隔開,分別代表妤嬌跟Denpa贏的場數 第二行如果妤嬌贏得較多輸出“Esreversatile!”,反之則輸出“Denpassible!”(皆 不含雙引號)
範例輸入
9 1 2 3 4 5 6 7 8 9
範例輸出
7 2
Esreversatile!
限制
50%的測試資料中k≤106
70%的測試資料中k至多只會有兩種質因數 100%的測試資料中k ≤1012, t <200
Hint
Esreversatile意謂妤嬌多才多藝
3 Problem J: 禁忌「禁じられた DVD」
敘述
時限: 5s I/O檔名: (dvd.in / dvd.out) 有一天,阿樂來到了阿正家裡玩。可是只有兩個人,打撲克也打膩了,玩大富翁也玩完了,當然,你想得到的 兩個人的遊戲他們都玩過了,卻發現還離阿樂要回家的時間很久……
這時阿正就提出了:「對了!我家有不少的DVD耶!不如我們來看看打發時 間吧!」
當然,阿樂也欣然的接受了這個提議。
當他們來到了電視機旁邊的DVD架上,他們又遇見了一個問題……
由於阿正家中的DVD架有N 層,而第i層有Mi(1≤i ≤N)片DVD.而且阿 正的爸有非常嚴重的潔癖,他非常不喜歡架上的DVD「倒下」。所以當你拿取 DVD的時候,你只能拿取那一層的最左邊或是最右邊那片,因為如果你拿的是 中間的……你就會看到在你拿的DVD旁邊變「ˊˋ」,而阿正的爸爸回來之後的表 情也會變「ˋˊ」。
由於時間寶貴,因此再回家之前阿樂跟阿正有足夠的時間看 K 片的 DVD,
然而他們也希望能好好把握這段時間,利用看這K 片的時間盡量滿足自己。
還好阿正爸爸有在每片DVD上標示了「健康度」,而他們希望能看K 片然 後獲得的健康度越高越好!
對此他們感到十分的困惑,究竟該怎麼挑片才能盡量滿足他們的需求呢?
輸入
第一列有兩個數字,N 以及K
之後會有 N 列,每一列的第一個數字為M,代表此列有幾片DVD,而後接 著M 個正整數代表著這M 片DVD的健康度
輸出
範例輸入
2 3 3 3 7 2 3 4 1 5
範例輸出
15
限制
1≤N ≤100 1≤M ≤50 1≤K ≤5000
Hint
範例說明:
在範例測資中,架子總共有2層,而你要選取3片DVD來觀看 第一層中有3片DVD,健康度由左至右分別是3,7,2
第二層中有3片DVD,健康度由左至右分別是4,1,5
現在要有最大的健康度的取法是從第一層拿取最左邊兩個,再從第 二層拿取最右邊的,健康度= (3 + 7 + 5) = 15
4 Problem W: Fenzhangel Beats!(勤奮的天使!)
敘述
時限: 5s I/O檔名: (fenzhangel.in / fenzhangel.out)Fenzhangel Beats!在動畫收視大勝利後,官方決定製作遊戲版再撈一筆. 有別
於一般的工口遊戲(工業資本主義口味的遊戲),在Fenzhangel Beats!中,主角-華
澤奮藏(俗稱天使),要在校園四處來回奔波,到處感化眾人. 時至今日,本遊戲已經
成為一個家喻戶曉的“奮Game”(主角勤奮工作的遊戲),你還在等什麼?
天才科學少女-妤嬌,看完動畫版之後被感化了:
嗚吼喔喔喔喔喔啊啊啊啊啊啊啊啊啊啊啊‼\香菜/\香菜/\香菜/\香菜/
,便買了一套來玩. 然而,無論玩了幾次,主角奮藏到最後總是會被不知哪來的黑 影吃掉進入壞結局,更糟糕的是,遊戲設計不良無法存檔而必須重玩. 重玩了數十 次,妤嬌決定上網查攻略.
攻略是這樣寫的:
這個校園總共有n棟建築,每棟建築都有m個任務要解. 然而,任 務並非隨時隨地都可以接,有以下限制:
• 每次只能進行一個任務,同時接兩個以上的任務會當機.
• 要接一個任務,必須到發出那個任務的委託人所在的建築.
• 每個任務都是跑到校園的其中一棟建築感化一個人 (這棟 建築可能和委託人所在的建築相同).
• 感化完成後即任務完成,不必回報任務,也沒有任務報酬.
• 每棟建築剛好有m個委託人,每棟建築也剛好有m個要感
化的人(分別是校園各地不同任務的感化目標).
• 每棟建築的委託任務有順序性(委託人會排隊),在完成該建 築的前面一個任務之前不能接下一個任務.
此外,進入一棟建築需要耗費1單位時間(少女祈禱中…). 唯有花 費最少時間下完成全部n×m個任務才能進入Ecstasy世界線.
輸入
第一行有兩個數字n, m,代表有n棟建築,每棟建築有m個任務. 接下來有n 行,第i行有m 個數字ai1, ai2, . . . , aim,其中 aij 代表第i棟建築的第 j 個委託任 務的感化目標在第aij 棟建築.
輸出
輸出一個數字,代表要花多少單位的時間方能完成總共n×m個任務.
範例輸入
3 2 1 2 3 2 1 3
範例輸出
5
限制
在所有的aij 中,1, . . . , n每個數字會剛好出現m次;
50%的測資中n×m≤30;
70%的測資中n×m≤100;
100%的測資中n×m ≤105.
Hint
範例解釋,其中一種在5單位時間完成所有任務的方式為:
遊戲開始 −−−−−→進入建築2 接任務2-1 −−−−−→進入建築3 完成任務2-1 −→ 接任務3-1 −−−−−→進入建築1 完成任務3-1−→接任務1-1−→完成任務1-1−→接任務1-2−−−−−→進入建築2 完成任務1-2−→ 接任務2-2−→完成任務2-2−−−−−→進入建築3 接任務3-2−→完成任務3-2−→Ecstasy世界線