2006百度之星程序設計比賽複賽試題

1.另類殺人遊戲

週末的晚上,百度的員工們總喜歡聚集在公司的會議室玩殺人遊戲。從1警1匪到n警n匪,他們嘗試了幾乎所有流行的殺人遊戲規則。終於有一天,連最熱衷殺人遊戲的“殺人不眨眼”的Austin也開始對無休止的辯論感到厭煩。於是,他決定改變他的一貫作風,他開始變成了一個“殺人不睜眼”的殺手。

如何做到“殺人不睜眼”呢?Austin早已構思好他的殺人計劃:

   1. N個人(包括Austin)坐成一圈玩殺人遊戲,按順時針編號 1 2 3 4 ... ...
   2. Austin從1號開始順時針開始數到第m號就殺掉第一個人,被殺掉的人要退出遊戲。
   3. 如果第m個人恰好是Austin自己,他就殺掉他順時針方向的下一個人。
   4. Austin從被殺的人的下一個順時針數m個人,把第m個殺掉。
   5. 重複2-4,直至殺掉所有人。

Austin 把這個殺人計謀告訴了法官小k,他便可以閉起眼睛殺人啦。作爲一個正直善良的法官,小k當然不能讓殘忍的Austin得逞,於是,她偷偷把Austin的殺人計劃告訴了作爲警察的你,聰明的百度之星。現在,你的任務是活到最後,與“殺人不睜眼”的Austin對決。

輸入要求:
第一個行包含一個整數K,表示有K組測試數據。 對於每組測試數據三個整數:
N,M,T,(3<=N<=10000,1<=M,T<=10000)
分別表示參與遊戲的人數,Austin每隔M個人會殺掉一人,Austin初始位置的標號。

輸入樣例:
2
7 4 1
7 4 1

輸出要求:
每個測試數據輸出一個整數。
你需要選擇的初始位置的序號,以確保最後剩下的兩個人是你與Austin。

輸出樣例:
5
5
例子說明:殺人順序爲4 2 7 6 3 5 , 所以5 是你要選擇的位置。

2.空中飛猴

馬戲團裏新來了一隻很特別的小猴子皮皮,皮皮不僅長得漂亮,還很聰明。自從它來到馬戲團之後,“空中飛猴”成了馬戲團裏的保留節目,慕名觀看的人絡繹不絕。 “空中飛猴”表演開始時,空中架着兩根長長的鋼絲。皮皮在其中一根上,它的目標是到達另一個根鋼絲上。皮皮必須在爬行一定距離後縱身一躍,直接跳到另一根鋼絲的某個位置。由於皮皮的速度非常快,它的運動軌跡可以近似的看成一條直線段。爲了不讓自己太危險,皮皮希望自己的跳躍距離儘量短,而爲了不讓觀衆等得太不耐煩,它在鋼絲上的爬行距離不能超過d。在爬行距離不超過d的情況下,皮皮的跳躍距離最短是多少?

輸入要求:
輸入文件包含多組測試數據。每組測試數據包含16個實數x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,xp,yp,zp, d,表示兩根鋼絲分別爲線段(x1,y1,z1)-(x2,y2,z2)和(x3,y3,z3)-(x4,y4,z4),皮皮的座標爲(xp, yp, zp),最大爬行距離爲d。皮皮保證在第一條鋼絲上,保證每條鋼絲長度大於零。但兩條鋼絲有可能相交甚至重疊。

輸入樣例:

0.0 0.0 0.0 4.0 4.0 0.0 4.0 0.0 1.0 0.0 4.0 1.0 2.0 2.0 0.0 10.0

輸出要求:
每組測試數據輸出一行,僅包含一個非負實數,四捨五入保留三位小數,即最短跳躍距離。

輸出樣例:

1.000

3.星球大戰

公元4046年,人類科學高度發達,絕大部分人都已經移居至浩瀚的宇宙,在上千顆可居住的星球上留下了人類的印記。然而,此時人類卻分裂成了兩個聯盟:正義聯盟和邪惡聯盟。兩個聯盟之間仇恨難解,時有戰爭。

現在,邪惡聯盟通過不正當貿易積聚了大量宇宙財富。因此,正義聯盟計劃要破壞邪惡聯盟的非法貿易網絡,從而影響邪惡聯盟的經濟狀況,爲下一次戰爭作好準備。邪惡聯盟由數百顆星球組成,貿易通過星球間的運輸航道來完成。一條運輸航道是雙向的且僅連接兩個星球,但兩個星球之間可以有多條航道,也可能沒有。兩個星球之間只要有運輸航道直接或間接的相連就可以進行貿易。正義聯盟計劃破壞邪惡聯盟中的一些運輸航道,使得邪惡聯盟的星球分成兩部分,任一部分的星球都不能與另一部分的星球進行貿易。但是爲了節省破壞行動所需的開支,正義聯盟希望破壞儘量少的運輸航道來達成目標。請問正義聯盟最少需要破壞多少條運輸航道呢?

輸入要求:
輸入文件包含多組測試數據。每組測試數據第一行爲兩個整數N和M(2≤N≤500,0≤M≤N(N-1)/2),N爲邪惡聯盟中星球的數量。接下來M行,每行三個整數A、B和C(0≤A,B<N,A≠B,C>0),表示星球A和星球B之間有C條運輸航道。運輸航道的總數量不超過10^8。

輸入樣例:

3 3
0 1 1
1 2 1
2 0 1
4 3
0 1 1
1 2 1
2 3 1
8 14
0 1 1
0 2 1
0 3 1
1 2 1
1 3 1
2 3 1
4 5 1
4 6 1
4 7 1
5 6 1
5 7 1
6 7 1
4 0 1
7 3 1

輸出要求:
每組測試數據輸出一行,包含一個整數,表示需要破壞的運輸航道的數量。
如果輸入的貿易網絡本來就是不連通的,則輸出0。

輸出樣例:

2
1
2

4.X博士的綵球遊戲

X博士是一個研究兒童智力開發方法的科學家,他爲幼兒教育領域做出了許多貢獻。最近,X博士正在研究一種適合兒童的遊戲,用以輔助發展兒童的觀察力、注意力和思維能力。經過連日的構思,X博士終於設計出了一種遊戲:綵球遊戲。

綵球遊戲是一種單人蔘與的遊戲,遊戲首先給出一串由許多不同顏色的小球組成的小球序列,以及一個整數參數M(M≥2)。一段連續的具有相同顏色的小球序列稱爲連續同色序列。小孩,即遊戲參與者,每次可以向任意一段連續同色序列插入一個同色小球,使該序列的長度加一。當一段連續同色序列在插入一個同色小球后其長度達到M時,該序列就會爆炸消失,然後原序列兩邊的其餘小球會重新連成一串,如果兩段相同顏色的連續同色序列在此時連接在一起,它們就會合並形成一段新的連續同色序列。如果新形成的連續同色序列長度達到M,這段序列也會爆炸消失,然後重複上述過程,直到沒有新的長度達到M的連續同色序列出現爲止。遊戲的目標很簡單,就是插入儘量少的小球,使得所有小球都爆炸消失掉。

通過長時間的遊戲和不斷提高遊戲水平,這個遊戲可以很好地開發兒童的觀察力、注意力和思維能力。但是X博士仍然面臨着一個困難的問題,他還需要設計出一個遊戲演示AI程序,可以以最優的方式(即插入的小球數量最小)進行遊戲,用於遊戲教學,或者在遊戲中對小孩給出提示。X博士並不擅長此類程序,因而他無法完成這個任務,你可以幫助他嗎?

輸入要求:
輸入文件包含多組測試數據。每組測試數據第一行爲整數M(2≤M≤20),第二行爲一條非空的字符串,由大寫字母組成且長度不超過200,表示初始的一串小球,不同的字母表示不同的小球顏色。初始時可能會存在一些長度達到M的連續同色序列,但這些序列不會馬上爆炸消失。

輸入樣例:
3
AAABAAA
3
ABBABBA
3
AAAABCCBBB

輸出要求:
每組測試數據輸出一行,表示至少需要插入多少次小球才能使所有小球爆炸消失掉。

輸出樣例:
2
2
2

 5.追捕

四個小孩正在花園裏玩追捕遊戲。一個小孩扮演逃亡者,其餘三個小孩做追捕者。花園是一塊由N行M列方格組成的草地,花園周圍有木欄包圍着,不能走出,花園裏面還有一些障礙物不能夠通過。遊戲可以進行許多回合,每個回合分成兩輪,第一輪追捕者可以進行追捕行動,第二輪逃亡者可以根據前一輪追捕者的行動開展逃亡旅程。在第一輪裏,三個追捕者必須在三人中選擇一個人向某個相鄰的方格走一步,只有在三個人都沒有可以走的相鄰方格時,他們才允許選擇停留在原地。在第二輪裏,逃亡者也必須選擇某個相鄰的方格走一步,如果逃亡者沒有任何可走的方格,那麼逃亡者就被捕了。四個小孩都不允許走到有障礙物或其他人的方格上,也不能走出花園,因而,四個小孩總是會位於不同的方格上面。

這些小孩都是非常聰明的,三個追捕者也是團結一致的。追捕者如果有可以捉到逃亡者的方法,那麼他們就一定不會錯過。逃亡者如果有不被捕獲的方法,那麼他也不會犯錯。除此之外,追捕者會希望儘快地捉到逃亡者,而逃亡者即使在會被捕獲的情況下也會儘可能地拖延時間。給定花園的障礙物的分佈圖和四個小孩的初始位置,你知道追捕者有方法捉到逃亡者嗎?如果有,他們要經過多少輪後才能捉到逃亡者呢?

輸入要求:
輸入文件包含多組測試數據。每組測試數據第一行爲兩個整數N和M(1≤N≤10,1≤M≤10),爲花園方格陣列的行數和列數。接下來N行,每行M個字符,可以爲“.”、“#”、“O”和“X”,分別表示空地、障礙物、追捕者和逃亡者。追捕者總是會有三個,而且四個小孩一開始也都會在空地上面。

輸入樣例:

2 2
OO
OX
3 3
OOO
##X
...
3 3
OO#
###
.OX
3 4
OO##
####
..OX
4 4
OOO.
....
....
...X
5 5
O...O
.....
..#..
.....
O...X
5 5
O...O
.....
...#.
.....
O...X
6 6
......
.O..O.
..##..
..##..
.O..X.
......
6 6
#.....
.O..O.
..##..
..##..
.O..X.
......
10 10
..........
..........
..O....O..
..........
..........
..........
..........
..O....X..
..........
..........
10 10
..........
.#.#.#.#.#
..O.....O.
.#.#.#.#.#
..........
.#.#.#.#.#
..........
.#.#.#.#.#
..O.....X.
.#.#.#.#.#

輸出要求:
每組測試數據輸出一行,若追捕者能夠捉到逃亡者,則輸出他們要經過多少輪後才能成功。輪數的計算包括追捕者和逃亡者進行行動的兩輪,逃亡者被捕獲的那一輪不算,因而結果總是一個奇數。具體輸出格式請參考輸出樣例(請注意大小寫)。

The escapee will be captured after 1 steps
The escapee will be captured after 7 steps
The escapee will be captured after 5 steps
The escapee will never be captured
The escapee will be captured after 21 steps
The escapee will never be captured
The escapee will be captured after 41 steps
The escapee will never be captured
The escapee will be captured after 39 steps
The escapee will never be captured
The escapee will be captured after 51 steps
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章