你聽過「斯克兒悠斯」嗎?對,就是傳說中的天平秤。
據說天平秤出現於遠古時代。那時盤古開天闢地,上帝創造人類,魔法少女小向剛拿到IMO(International Magic Olympiad)的金牌。
那時,周逸讀完周易後不小心把天空周異(JE)了,於是女媧只好去找石頭來補天空。
可是問題來了,他不知道怎麼找石頭來補,因為他沒辦法比較那些石頭的重量。要知道,能補天的石頭不是一般的地磅可以量的出來的。
於是女媧前往重量之神CBD的神廟前尋求重量之神CBD的協助,因為傳說中重量之神可以精確地量出任何東西的重量。
女媧找到CBD後,和CBD說明了事情經過,CBD於是決定幫助她,拿出了傳家之寶—天平秤。
啊不對,是這個。
這個天平秤很厲害,不管多重的東西都可量。
天平秤有4個平台A、B、C、D,其中ABC3個平台,你只要把東西放上去,就可以量出誰最重、誰在中間、誰最輕,而要是在D上面擺東西的話,他還會告訴你ABC中比D重的那些裡最輕的那個是哪個,當然如果ABC都比D輕,那他會告訴你ABC誰最輕。
但是問題來了,這個天平秤必須用魔法指令來操作,但是女媧只會補天不會寫魔法指令,他只好找了你,天龍國立天龍大學魔法工程系的高才生,來幫忙編寫魔法指令,事後他會送你一顆補天用剩的石頭給你,你可以拿去壓泡菜。
這題不需要輸入,如果你輸入了任何東西,你將得到一個WA。
天平秤提供了你以下幾個魔法函數,請#include "lib1885.h"
之後,依照規定呼叫這些函數。
int Init();
:請在一開始呼叫,將回傳一個整數T,代表共有T個天空要補,每個天空都有6顆石頭,編號為1到6。
void orderCoins();
:對於每個要補的天空,請在一開始呼叫這個函數,之後才可以呼叫以下函數。
void answer(int[]);
:在呼叫上面的函數後,請在完成女媧的要求後呼叫這個函數,並傳入一個大小為6的陣列,依序代表最輕到最重的石頭編號。
以下4個函數,可以讓你查詢編號1到6的石頭的大小順序,其中A,B,C,D代表石頭的編號,不可以相同。
getHeaviest(A, B, C)
:回傳ABC中最重的石頭編號。
getLightest(A, B, C)
:回傳ABC中最輕的石頭編號。
getMedian(A, B, C)
:回傳ABC中第2重的石頭編號。
getNextLightest(A, B, C, D)
:如果ABC都比D輕,回傳ABC最輕的石頭編號,如果ABC之中有石頭比D重,回傳比D重的石頭中最輕的石頭編號。
這題不需要輸出,如果你輸出了任何東西,你將得到一個WA。
請按照規定呼叫給定的函數,呼叫最後4個比較函數getLightest(), getHeaviest(), getMedian() 和 getNextLightest()的總次數不可以超過Q次,否則你會得到一個WA(Q是對任何序列,用最佳策略排序所需要的次數)。
假設石頭從最輕到最重的編號是 3 4 6 2 1 5。
getMedian(4, 5, 6)
return 6,6是三者中第2重的。getHeaviest(3, 1, 2)
return 1,1是三者中最重的。getNextLightest(2, 3, 4, 5)
return 3,234都比5輕,所以回傳當中最輕的3。getNextLightest(1, 6, 3, 4)
return 6,1跟6比4重,1和6中最輕的是6。getHeaviest(3, 5, 6)
return 5,5是三者中最重的。getMedian(1, 5, 6)
return 1,1是三者中第2重的。getMedian(2, 4, 6)
return 6,6是三者中第2重的。answer([3, 4, 6, 2, 1, 5])
,你成功的排序了這6顆石頭。後記:於是天空就被補起來了,而CBD決定去吃早餐,這又是另外一個故事了。
IOI 2015 Day 1
Problem set / Description by 果茶
No. | Testdata Range | Score |
---|---|---|
1 | 0 | 2 |
2 | 1 | 3 |
3 | 2 | 2 |
4 | 3 | 3 |
5 | 4 | 2 |
6 | 5 | 3 |
7 | 6 | 2 |
8 | 7 | 3 |
9 | 8 | 2 |
10 | 9 | 3 |
11 | 10 | 2 |
12 | 11 | 3 |
13 | 12 | 2 |
14 | 13 | 3 |
15 | 14 | 2 |
16 | 15 | 3 |
17 | 16 | 2 |
18 | 17 | 3 |
19 | 18 | 2 |
20 | 19 | 3 |
21 | 20 | 2 |
22 | 21 | 3 |
23 | 22 | 2 |
24 | 23 | 3 |
25 | 24 | 2 |
26 | 25 | 3 |
27 | 26 | 2 |
28 | 27 | 3 |
29 | 28 | 2 |
30 | 29 | 3 |
31 | 30 | 2 |
32 | 31 | 3 |
33 | 32 | 2 |
34 | 33 | 3 |
35 | 34 | 2 |
36 | 35 | 3 |
37 | 36 | 2 |
38 | 37 | 3 |
39 | 38 | 2 |
40 | 39 | 3 |