1. 程式人生 > >2006百度之星

2006百度之星

2006 年百度之星程式設計大賽初賽題目 2

題目名稱:蟈蟈式的記分

內容描述:

蟈蟈小朋友剛剛學會了 0-9 這十個數字 , 也跟爸爸媽媽來參加百度每週進行的羽毛球活動。但是他還沒有球拍高,於是大人們叫他記錄分數。聰明的蟈蟈發現只要記錄連續得分的情況就可以了,比如用“ 3 2 4 ” 可以表示一方在這一局中連得三分後,輸了兩分,接著又連得到四分。可是,後來大人們發現蟈蟈只會用 0-9 這十個數字,所以當比賽選手得分超過 9 的時候,他會用一個 X 來表示 10 完成記分。但問題是,當記錄為“ X 3 5 ” 的時候,蟈蟈自己也記不起來是一方連續得到十三分後,再輸五分;還是先贏十分輸三分再贏五分。

因為百度內部就要開始進行羽毛球聯賽了,要先摸清大家的實力才好分組比賽呢~於是,大人們想知道以前每局的比分是怎樣的,以及誰獲得了勝利。要是遇到了根據比賽記錄無法確認比賽程序的情況,也要輸出相應的提示哦。

需要幫蟈蟈進一步說明的是,比賽是五局三勝的,每局先獲得二十一分的為勝,但是勝方必須領先對手兩分或以上,否則必須繼續比賽直到一方超出對手兩分為止,比分多的一方獲勝。任何一方先獲得三局的勝利後就獲得勝利,比賽也相應的結束。而且蟈蟈保證是完整的無多餘資訊的記錄了比賽。

輸入資料:

以 point.in 為輸入檔案,檔案中首行只有一個整數 M ,表示蟈蟈記錄了多少場比賽的分數。每場比賽用兩行記錄,第一行是一個整數 N(N<=1000) 表示當前這個記錄中有多少個字元,第二行就是具體的 N 個字元表示記錄的分數。

輸出資料:

相應的內容將輸出到 point.out 檔案中,對應每一個分數記錄,輸出相應的每局分數,每局分數都使用兩個整數表示,表示兩個選手的得分,中間用 ":" 分隔開;每組分數記錄間使用一個空行分隔開。如果相應的比賽結果無法預測的時候,以” Unknown “一個單詞獨佔一行表示。

??輸入和輸出結果資料樣例:

Sample Input :

3

23

9 7 3 6 2 4 7 8 3 2 7 9 X 2 2 1 2 1 X 1 X 1 1

25

9 3 8 5 4 8 3 9 8 4 X X X X 2 X X X X 2 8 4 9 2 4

43

7 7 7 7 7 3 4 5 6 7 6 5 4 2 1 3 5 7 9 7 5 3 1 3 0 9 9 3 9 3 2 1 1 1 5 1 5 1 5 1 5 5 1

Sample Output :

21:17

24:22

21:3

Unknown

21:14

20:22

21:23

21:16

21:9

2006 年百度之星程式設計大賽初賽題目 3

變態的比賽規則

為了促進各部門員工的交流,百度 (baidu) 舉辦了一場全公司範圍內的 " 拳皇友誼賽 " ,負責組織這場比賽的是百度的超級 " 拳皇 " 迷 W.Z. W.Z 不想用傳統的淘汰賽或者迴圈賽的方式,而是自己制定了一個比賽規則。

由於一些員工(比如同部門或者相臨部門員工)平時接觸的機會比較多,為了促進不同部門之間的交流, W.Z 希望員工自己組成不同組。不同組之間的每兩個人都會進行一場友誼賽而同一組內的人則之間不會打任何比賽。

比如 4 個人,編號為 1--4, 如果分為兩個組並且 1,2 一個組, 3 , 4 一個組,那麼一共需要打四場比賽: 1 vs 3,1 vs 4,2 vs 3,2 vs 4. 而如果是 1,2,3 一組, 4 單獨一組,那麼一共需要打三場比賽 : 1 vs 4,2 vs 4,3 vs 4.

很快 W.Z 意識到,這樣的比賽規則可能會讓比賽的場數非常多。 W.Z 想知道如果有 N 個人 , 通過上面這種比賽規則,總比賽場數有可能為 K 場嗎?比如 3 個人,如果只分到一組則不需要比賽,如果分到兩組則需要 2 場比賽 , 如果分為三組則需要 3 場比賽。但是無論怎麼分都不可能只需要 1 場比賽。

相信作為程式設計高手的你一定知道該怎麼回答這個問題了吧? 那麼現在請你幫助 W.Z 吧。

輸入

每行為一組資料,包含兩個數字 N, K 。 (0<N<=500, K>=0)

輸出

對輸入的 N,K 如果 N 個員工通過一定的分組方式可能會一共需要 K 場比賽,則輸出 "YES", 否則輸出 "NO", 每組資料佔一行。

所有的輸入輸出均為標準輸入輸出。

例子

輸入檔案 :

2 0

2 1

3 1

3 2

輸出 :

YES

YES

NO

YES

2006 年百度之星程式設計大賽初賽題目 4

2007-05-14 17:39

剪刀石頭布

N 個小孩正在和你玩一種剪刀石頭布遊戲。 N 個小孩中有一個是裁判,其餘小孩分成三組(不排除某些組沒有任何成員的可能性),但是你不知道誰是裁判,也不知道小孩們的分組情況。然後,小孩們開始玩剪刀石頭布遊戲,一共玩 M 次,每次任意選擇兩個小孩進行一輪,你會被告知結果,即兩個小孩的勝負情況,然而你不會得知小孩具體出的是剪刀、石頭還是布。已知各組的小孩分別只會出一種手勢(因而同一組的兩個小孩總會是和局),而裁判則每次都會隨便選擇出一種手勢,因此沒有人會知道裁判到底會出什麼。請你在 M 次剪刀石頭布遊戲結束後,猜猜誰是裁判。如果你能猜出誰是裁判,請說明最早在第幾次遊戲結束後你就能夠確定誰是裁判。

輸入格式:

輸入檔案包含多組測試資料。每組測試資料第一行為兩個整數 N 和 M ( 1 ≤ N ≤ 500 , 0 ≤ M ≤ 2000 ),分別為小孩的個數和剪刀石頭布遊戲進行的次數。接下來 M 行,每行兩個整數且中間以一個符號隔開。兩個整數分別為進行遊戲的兩個小孩各自的編號,為小於 N 的非負整數。符號的可能值為“ = ”、“ > ”和“ < ”,分別表示和局、第一個小孩勝和第二個小孩勝三種情況。

輸出格式:

每組測試資料輸出一行,若能猜出誰是裁判,則輸出身為裁判的小孩的編號,並輸出在第幾次遊戲結束後就能夠確定誰是裁判。如果無法確定誰是裁判,或者發現剪刀石頭布遊戲的勝負情況不合理(即無論誰是裁判都會出現矛盾),則輸出相應的資訊。具體輸出格式請參考輸出樣例。

輸入樣例:

3 3

0<1

1<2

2<0

3 5

0<1

0>1

1<2

1>2

0<2

4 4

0<1

0>1

2<3

2>3

1 0

輸出樣例:

Can not determine

Player 1 can be determined to be the judge after 4 lines

Impossible

Player 0 can be determined to be the judge after 0 lines

說明:

共有 5 個測試資料集,每個測試資料集為一個輸入檔案,包含多組測試資料。每個測試資料集從易到難分別為 5 、 10 、 15 、 30 和 40 分,對每個測試資料集分別執行一次程式,每次必須在執行時限 3 秒內結束程式並輸出正確的答案才能得分。

所有資料均從標準輸入裝置( stdin/cin )讀入,並寫出到標準輸出裝置 ( stdout/cout )中。

五個測試資料集中輸入 N 分別不大於 20 、 50 、 100 、 200 和 500 ,各有 10 組測試資料。

2006 年百度之星程式設計大賽初賽題目 5

座位調整

題目描述:

百度辦公區裡到處擺放著各種各樣的零食。百度人力資源部的調研發現,員工如果可以在自己喜歡的美食旁邊工作,工作效率會大大提高。因此,百度決定進行一次員工座位的大調整。

調整的方法如下:

1 . 首先將辦公區按照各種零食的擺放分成 N 個不同的區域。(例如:可樂區,餅乾區,牛奶區等等)。

2 . 每個員工對不同的零食區域有不同的喜好程度(喜好程度度的範圍為 1 — 100 的整數, 喜好程度越大表示該員工越希望被調整到相應的零食區域)。

3 . 由於每個零食區域可以容納的員工數量有限,人力資源部希望找到一個最優的調整方案令到總的喜好程度最大。

資料輸入:

第一行包含兩個整數 N , M ,( 1<=N , M<=300 )。分別表示 N 個區域和 M 個員工。

第二行是 N 個整數構成的數列 a ,其中 a[i] 表示第 i 個區域可以容納的員工數, (1<=a[i]<=M , a[1]+a[2]+..+a[N]=M) 。

緊接著是一個 M*N 的矩陣 P , P ( i , j )表示第 i 個員工對第 j 個區域的喜好度。

答案輸出:

對於每個測試資料,輸出可以達到的最大的喜好程度。

輸入樣例:

3 3

1 1 1

100 50 25

100 50 25

100 50 25

輸出樣例:

175

資料解釋:此資料只存在一種安排方法,三個員工分別安置在三個區域。最終的喜好程度為 100+50+25=175

2006 年百度之星程式設計大賽初賽題目 6

2007-05-14 17:42

百度語言翻譯機

時限 1s

百度的工程師們是非常注重效率的,在長期的開發與測試過程中,他們逐漸創造了一套他們獨特的縮率語。他們在平時的交談,會議,甚至在各中技術文件中都會大量運用。

為了讓新員工可以更快地適應百度的文化,更好地閱讀公司的技術文件,人力資源部決定開發一套專用的翻譯系統,把相關文件中的縮率語和專有名詞翻譯成日常語言。

輸入資料:

輸入資料包含三部分

1. 第一行包含一個整數 N ( N<=10000 ),表示總共有多少個縮率語的詞條。

2. 緊接著有 N 行的輸入,每行包含兩個字串,以空格隔開。第一個字串為縮率語(僅包含大寫英文字元,長度不超過 10 ),第二個字串為日常語言(不包含空格,長度不超過 255 ) .

3. 從第 N+2 開始到輸入結束為包含縮略語的相關文件。(總長度不超過 1000000 個字元)

輸出資料:

輸出將縮率語轉換成日常語言的文件。(將縮率語轉換成日常語言,其他字元保留原樣)

輸入例子:

6

PS 門戶搜尋部

NLP 自然語言處理

PM 產品市場部

HR 人力資源部

PMD 產品推广部

MD 市場發展部

百度的部門包括 PS , PM , HR , PMD , MD 等等,其中 PS 還包括 NLP 小組。

輸出例子:

百度的部門包括門戶搜尋部,產品市場部,人力資源部,產品推广部,市場發展部等等,其中門戶搜尋部還包括自然語言處理小組。

注意:

1 . 輸入資料中是中英文混合的,中文采用 GBK 編碼。

2 . 為保證答案的唯一性,縮率語的轉換採用正向最大匹配(從左到右為正方向)的原則。請注意輸入例子中 PMD 的翻譯。

2006年百度之星程式設計大賽試題複賽題目

2006 年百度之星程式設計大賽複賽題目 1

s01.jpg

另類殺人遊戲

週末的晚上,百度的員工們總喜歡聚集在公司的會議室玩殺人遊戲。從 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 單挑。

輸入:

第一個行包含一個整數 T ,表示有 T 組測試資料。

對於每組測試資料:

三個整數

N , M , T , (3<=N<=10000,1<=M,T<=10000) 分別表示參與遊戲的人數, Austin 每隔 M 個人會殺掉一人, Austin 初始位置的標號。

輸出:

每個測數資料輸出一個整數。

你需要選擇的初始位置的序號,以確保最後剩下的兩個人是你與 Austin 。

輸入例子:

2

7 4 1

7 4 1

輸出例子

5

5

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

2006 年百度之星程式設計大賽複賽題目 2

s02.jpg

空中飛猴

馬戲團裡新來了一隻很特別的小猴子皮皮 —— 不僅長得漂亮,還很聰明。自從它來到馬戲團之後, “ 空中飛猴 ” 成了馬戲團裡保留節目,慕名觀看的人絡繹不絕。 “ 空中飛猴 ” 表演開始時,空中架著兩根長長的鋼絲。皮皮在其中一根上,它的目標是到達另一個根鋼絲上。皮皮必須在爬行一定距離後縱身一躍,直接跳到另一根鋼絲的某個位置。由於皮皮的速度非常快,它的運動軌跡可以近似的看成一條直線段。為了不讓自己太危險,皮皮希望自己的跳躍距離儘量短,而為了不讓觀眾等得太不耐煩,它在鋼絲上的爬行距離不能超過 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 個測試資料集,每個測試資料集為一個輸入檔案,包含多組測試資料。每個測試資料集從易到難分別為 30 、 30 和 40 分,對每個測試資料集分別執行一次程式,每次必須在執行時限 3 秒內結束程式並輸出正確的答案才能得分。

所有資料均從標準輸入裝置( stdin/cin )讀入,並寫出到標準輸出裝置 ( stdout/cout )中。

三個測試資料集各有 10000 組測試資料。

2006 年百度之星程式設計大賽複賽題目 3

星球大戰

s03.jpg

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

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

輸入格式:

輸入檔案包含多組測試資料。每組測試資料第一行為兩個整數 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 。

輸出格式:

每組測試資料輸出一行,包含一個整數,表示需要破壞的運輸航道的數量。

如果輸入的貿易網路本來就是不連通的,則輸出 0 。

輸入樣例:

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

輸出樣例:

2

1

2

說明:

共有 5 個測試資料集,每個測試資料集為一個輸入檔案,包含多組測試資料。每個測試資料集從易到難分別為 5 、 10 、 15 、 30 和 40 分,對每個測試資料集分別執行一次程式,每次必須在執行時限 10 秒內結束程式並輸出正確的答案才能得分。

所有資料均從標準輸入裝置( stdin/cin )讀入,並寫出到標準輸出裝置 ( stdout/cout )中。

五個測試資料集中輸入 N 分別不大於 20 、 50 、 100 、 200 和 500 ,各有 9 組測試資料。

2006 年百度之星程式設計大賽複賽題目 4

綵球遊戲

s04.jpg

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

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

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

輸入格式:

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

輸出格式:

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

輸入樣例:

3

AAABAAA

3

ABBABBA

輸出樣例:

2

2

說明:

共有 5 個測試資料集,每個測試資料集為一個輸入檔案,包含多組測試資料。每個測試資料集從易到難分別為 5 、 10 、 15 、 30 和 40 分,對每個測試資料集分別執行一次程式,每次必須在執行時限 30 秒內結束程式並輸出正確的答案才能得分。

所有資料均從標準輸入裝置( stdin/cin )讀入,並寫出到標準輸出裝置 ( stdout/cout )中。

2006 年百度之星程式設計大賽複賽題目 5

s05.jpg

追捕

四個小孩正在花園裡玩追捕遊戲。一個小孩扮演逃亡者,其餘三個小孩做追捕者。花園是一塊由 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

說明:

共有 5 個測試資料集,每個測試資料集為一個輸入檔案,包含多組測試資料。每個測試資料集從易到難分別為 5 、 10 、 15 、 30 和 40 分,對每個測試資料集分別執行一次程式,每次必須在執行時限 60 秒內結束程式並輸出正確的答案才能得分。

所有資料均從標準輸入裝置( stdin/cin )讀入,並寫出到標準輸出裝置 ( stdout/cout )中。

五個測試資料集中輸入 N 、 M 分別不大於 6 、 7 、 8 、 9 和 10 。

2006年百度之星程式設計大賽試題總決賽題目

俄羅斯方塊

俄羅斯遊戲中共有七種方塊,每種方塊都由四個方格組成,如下圖所示,七種方塊分別編號為 1~7 。

sss.gif

遊戲中,每次落下一個方塊,落到一個寬度為 10 格的槽中。方塊的下部一旦碰到槽的底部,或槽中已有的方塊,就不能再移動。方塊落下不動後,如果有某些行因落下的方塊而填滿,這些行將被消去。方塊下落前,你可以控制方塊的左右移動和旋轉,以將其放在合適的位置。你對方塊的所有移動和旋轉操作在下落前(槽外)就計算完畢,然後直接下落到底,下落過程中不能再做操作。如果方塊剛剛落下後頂部高度大於 17 行,遊戲結束 -- 即使此時有些行可以消除。

互動方式

你的程式應當包含 tetris_lib.h ,並連線相應的庫檔案。庫中的兩個重要函式是:

void StartGame(int* t1, int* t2);

int Step(int r, int l, int* next);

你的程式應該首先呼叫 StartGame ,其中 t1 和 t2 表示前兩個方塊的編號( t2 對應於傳統遊戲中的 " 下一個方塊 " )。接下來,你的程式每次可以使用 Step 函式下落一個方塊,返回消去的行數。 r 表示旋轉方式( r=0, 1, 2, 3 分別表示順時針旋轉 0 度、 90 度、 180 度、 270 度), l 表示方塊在旋轉後的最左邊一格的列編號(從左到右依次為 1, 2, … , 10 ),而 next 表示方塊落下後新的下一個方塊編號( 0 代表沒有下一個方塊,下一次 Step 呼叫後庫將自動終止你的程式)。你的程式不應自行終止。

關於自測的提示

呼叫 StartGame 函式時,庫將從標準輸入中讀入若干行,每行包括一個整數,表示方塊的編號。你可以利用這一點對你的程式進行測試。程式執行結束後,測試庫將把結束原因和得分顯示在標準輸出中。

庫中還有兩個函式可以用於自測:

void SetLog(const char* filename);

void Snapshot();

如果需要測試庫記錄程式的行為,請在呼叫 StartGame 之前呼叫 SetLog 函式。

評分規則

在與測試庫互動的過程中,出現以下條件之一,則庫將終止程式:

1 、呼叫引數非法

2 、方塊剛剛落下後,其頂部高度大於 17 行

3 、所有方塊均已落下

4 、本資料的執行總時間超過 1 秒鐘

程式終止後,假設一次消去 1 行、 2 行、 3 行、 4 行的次數分別為 a, b, c, d ,則該資料原始得分為 2b+ 6c +10d 。換句話說,消去單獨的 1 行不得分。

對於每個資料,得分排名前八的程式分別得到 10, 7, 6, 5, 4, 3, 2, 1 分。如果原始得分相同,則消去行數多的排名在前;如果原始得分和消去行數都相同,則下落方塊總數多的排名在前。如果三者都相同,則得分相同。消去行數為 0 的程式不得分,即使它排在前八。

最終成績按照 50 個數據的總分從大到小排序,如果總分相同則按所有資料的原始得分之和排序;如果仍有相同,則按所有資料的消去的總行數排序;如果仍相同,則名次相同。

相關推薦

2006

2006 年百度之星程式設計大賽初賽題目 2 題目名稱:蟈蟈式的記分 內容描述: 蟈蟈小朋友剛剛學會了 0-9 這十個數字 , 也跟爸爸媽媽來參加百度每週進行的羽毛球活動。但是他還沒有球拍高,於是大人們叫他記錄分數。聰明的蟈蟈發現只要記錄連續得分的情況就可以了,比如用“

PHP 求解:2006程式設計大賽複賽題目:另類殺人遊戲

2006年百度之星程式設計大賽試題複賽題目 另類殺人遊戲 週末的晚上,百度的員工們總喜歡聚集在公司的會議室玩殺人遊戲。從 1 警 1 匪到 n 警 n 匪,他們嘗試了幾乎所有流行的殺人遊戲規則。終於有一天,連最熱衷殺人遊戲, “ 殺人 ” 不眨眼的

2006程式設計大賽複賽第4題 綵球遊戲(zuma) 題目及解法

修改原始碼,增加註釋。 /* * common.h * * Created on: 2010-2-6 * Author: edan.deng */ #ifndef COMMON_H_ #define COMMON_H_ #include <i

hdu 5253 連接的管道(kruskal)(2015年程序設計大賽 - 初賽(2))

ostream turn targe 告訴 margin 表輸入 輸入 cst 代碼 連接的管道 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T

2014年程序設計大賽 - 資格賽 1002 Disk Schedule(雙調歐幾裏得旅行商問題)

problem code 數據讀取 包括 想是 tracking sample cout http Problem Description 有非常多從磁盤讀取數據的需求。包含順序讀取、隨機讀取。為了提高效率,須要人為安排磁盤讀取。然而,在現實中。這樣的做法非常復雜。

ACM-資格賽Energy Conversion——hdu4823

ios break get enter span bmi ria hint -c Energy Conversion Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav

2014資格賽題解

.cn -i lan while pro acm 起點 pos con 比賽鏈接:點擊打開鏈接 ,,杭電把比賽關了代碼都找不到了。。 無責任民科還是mark一下好了。。 HDU 4823 Energy Conversion 把式子變換一下發現是一個等比數列,高速冪就可以

2014年程序設計大賽 - 資格賽 1001 Energy Conversion

大賽 pro 整數 code clu n) 足夠 gin bre Energy Conversion Problem Description   魔法師百小度也有遇到難題的時候——   如今,百小度正在一個古老的石門面前,石門上有一段古老的魔法文字,讀懂這樣的魔法

2014資格賽第三題

字符串 struct uri hit other printf 能夠 ava 單獨 Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others

2014 1003 題解 Xor Sum

dsm xor 難題 ane rac pro 數據包 20px weight Xor Sum Problem Description Zeus 和 Prometheus 做了一個遊戲,Prometheus 給 Zeus 一個集合,集合中包括了N個正整數,隨後 P

2014資格賽4題

歐幾裏得 font define ria min read span post eight 因為都是中文題。題意就不寫了。 A、Energy Conversion 這題先推斷一下能量能否添加,然後再依據添加這個公式去求出一個等比公式。就能夠直接求出須

2016"" - 初賽(Astar Round2A)--HDU 5690 |數學轉化+快速冪

分享 otto lld 方法 can a* sca uic left Sample Input 3 1 3 5 2 1 3 5 1 3 5 99 69 Sample Output Case #1: No Case #2: Yes Case #3: Yes

2017""程序設計大賽 - 資格賽 度度熊的王國戰略

set ear sin 們的 ret ont 十分 turn std 度度熊的王國戰略 度度熊國王率領著喵哈哈族的勇士,準備進攻嘩啦啦族。 嘩啦啦族是一個強悍的民族,裏面有充滿智慧的謀士,擁有無窮力量的戰士。 所以這一場戰爭,將會十分艱難。 為了更好的進攻嘩啦啦族

1002 度度熊的王國戰略

超級 class mes 力量 can nbsp 是把 關系 cout Problem Description 度度熊國王率領著喵哈哈族的勇士,準備進攻嘩啦啦族。 嘩啦啦族是一個強悍的民族,裏面有充滿智慧的謀士,擁有無窮力量的戰士。 所以這一場戰爭,將會十分艱難。 為了

2017資格賽 1003:度度熊與邪惡大魔王(DP)

solution nav normal ner 就會 預處理 display badge rate 度度熊與邪惡大魔王 Accepts: 3021 Submissions: 18787 Time Limit: 2000/1000 MS (Java/Ot

2017資格賽 1003 度度熊與邪惡大魔王 背包DP

log accep 防禦 ssi str 完全背包 time 怪物 amp 度度熊與邪惡大魔王 Accepts: 3027 Submissions: 18837 Time Limit: 2000/1000 MS (Java/Others) Memor

度度熊的午飯時光 2017資格賽 -.-

set others spa 字典序 info iostream 最小 long long 預算 度度熊的午飯時光 Accepts: 755 Submissions: 8737 Time Limit: 2000/1000 MS (Java/Others)

hdu 6082 度度熊與邪惡大魔王(2017""程序設計大賽 - 資格賽 )

lib div problem ron -a def size 進行 無限 度度熊與邪惡大魔王 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total

2017 資格賽 題解

真心 數據 targe 比較 blog png 防禦 href 普通 百度之星 2017 資格賽 題解(原創)(2~5題 第一題方法是錯的 第二題數據太水 並不會正解) 轉載請註明出處http://www.cnblogs.com/nflslzt/p/7302377.html

2014初賽第一場部分題解

ref 連接 又是 百度之星 虛擬 子節點 get content trac 代碼太醜就不貼了。,又是一篇無責任民科的題解。。 HDU 4828 Grids 看了一下跟卡特蘭數差點兒相同就猜了一下,詳細為啥我也不知道。。然後有除法套個逆元。。 HDU 4830