第一題:拯救毛毛蟲
還記得甦蹦嗎?沒錯,永遠都是那隻愛吃橘子的烏龜。
話說在新年的最後,甦蹦前往了墨西哥神殿祈求古墨西哥先靈的力量來拯 救他那陷入蟲蟲危機的《傳說中的橘子園》。
可是墨西哥實在是很遠啊,甦蹦才剛踏出家門就肚子餓了。他走到了溪邊準 備找尋吃的。很快地他發現了溪中的荷葉上有很多隻毛毛蟲。
啊,他想著,連盤子都幫我準備好了那些毛毛蟲好可憐啊,應該救牠們上 岸。
甦蹦花了一些時間調查,發現荷葉上共有 N 種毛毛蟲。每種毛毛蟲可以用三 個數字來描述:W、D 和 C。表示這種毛毛蟲重量為 W 克、美味度為 D、共有 C 隻。
但是由於甦蹦實在是太餓了,餓到沒有力氣搬動太重的毛毛蟲:事實上,
他只有力氣搬一趟,這一趟搬運的毛毛蟲總重量不能超過 T 克。
看著毛毛蟲們在荷葉上掙扎、努力躲避水花的潑濺,甦蹦不禁惻隱之心大起
『這時候也顧不得什麼傳說中的橘子了!還是救活生命要緊』甦蹦對自己說著,
然後開始計算怎麼搬才能讓搬回來的毛毛蟲美味度總和最高。
可能是真的太餓了,甦蹦完全算不出來,只好向你求助。
請你寫一個程式幫幫他、也幫幫那些毛毛蟲吧!
輸入說明
輸入第一行有兩個正整數 N、T。表示毛毛蟲的種類和甦蹦最大負重,N <=
20 且 T <= 20,000。接下來會有 N 行,每行會有三個非負整數,Wi、Di和 Ci,依序 表示第 i 種毛毛蟲的重量、美味度跟數量,滿足 Ci <= 10。
輸出說明
輸出只需包含一行一個數字 K。表示能達到的最大美味度總和。
範例一
輸入 3 10 1 5 1 2 2 1 3 3 3 輸出 14
請繼續翻下一頁 雖然最後瘋狂科學家失敗了,但這也激勵了 DBTF開始了新的研究。
他發現,如果將許多橘子用強力膠水黏在一起,會變得更美味!
於是他準備了 N顆橘子,準備把它們串成一條橘子形蜈蚣。也就是總共要黏 (N-1)次,他可以任意調整順序,只要結果能排成一條橘子蜈蚣就好了。
但是不是什麼膠水都合用的。每個橘子都有自己的大小,如果要把兩顆大小 分別為 W1、W2的橘子黏起來,困難度會是|W1-W2|。
也就是他使用的膠水黏性至少要有|W1-W2|才行成功黏著。
DBTF 去雜貨舖問了膠水的價錢,發現這個雜貨舖有賣 M種膠水,每種膠水 都有單價C 和黏性 E,表示一罐這種膠水可以將困難度 <= E的兩顆橘子黏起來。
每種膠水都有無限多的存貨,但是一罐膠水只能用一次。
請你寫一個程式幫 DBTF算出黏接這條橘子蜈蚣的最低花費是多少。
輸入說明
輸入第一行有兩個非負整數 N、M。表示橘子的數量和膠水的種類數,N, M
<= 200000。第二行會有 N 個正整數,表示每顆橘子的大小。接下來會有M行,每 行有兩個正整數 Ci和Ei依序表示第 i 種膠水的單價和黏性。所有輸入的數字都會 是介於[0, 1000000000]的非負整數。
輸出說明
輸出只需包含一行。如果無法達成目標請輸出一個字串"Q__Q"。(Q 底線底線 Q,不含雙引號)。如果可以達成目標請輸出一個數字 K 表示最低花費。
範例一
輸入 4 3 3 1 5 5 1 1 2 2 3 3
輸出 5
市立建國高級中學資訊科毛毛蟲軍團製作群 編製 第2頁
輸入 3 1 3 1 3 1 1 輸出 Q__Q
請繼續翻下一頁 場上有很多細胞,一些細胞可以伸出觸手和其他細胞連接,就可以攻擊敵方細 胞或是替己方細胞進行補給。
由於上次遊戲作者的改版實在是造成天怒人怨,不能自肥的觸手還叫觸手 嗎!現在作者終於釋出下一個改版:這個改版把所有觸手變成雙向連接,也就 是如果B細胞跟 T細胞中間有一隻觸手的話,B細胞可以攻擊T細胞、T細胞同時 也可以攻擊B細胞。同時,作者也把觸手變成不可切斷的。也就是一進入遊戲,
畫面上便有許多已經連結好的觸手,你將不能添加或減少任何一條觸手。
改版也做了一個新的改進:任兩個細胞之間可以有多隻觸手連結。
最愛玩觸手的阿 ˋ 丘一聽到有新改版,立刻拋下瑪奇去玩TENTACLE WAR。
他花了一個小時又二十三分終於打到了最後一關:一進入遊戲發現這關總 共有 N 個細胞、M 條觸手。
他想要佔領某些細胞使得所有細胞都符合下列兩條件之一:1.本身被佔領 。 2.至少有一個被佔領的細胞跟它以觸手相鄰。
但是他又想儘速破關,所以他想問你,最少需要佔領幾個細胞?
輸入說明
輸入第一行有兩個正整數 N、M,表示這關有 N 個細胞和M 條觸手,1 <= N
<= 30 且 N-1 <= M <= N(N-1)/2 以及。細胞依序編號為 1~N。接下來有M行每行 有兩個數字Ai和 Bi,表示細胞 Ai和細胞Bi之間有觸手連接。保證整個關卡連通
,亦即任一細胞可以透過其他觸手和細胞中繼,到達另一細胞。
輸出說明
輸出只需包含一行一個數字 K。表示最少需要佔領的細胞數。
範例一
輸入 3 2 1 2 2 3
輸出 1
市立建國高級中學資訊科毛毛蟲軍團製作群 編製 第4頁
輸入 5 4 1 2 2 3 2 4 4 5 輸出 2
請繼續翻下一頁 海鞘大驚,因為上面寫著,給草甘看完該錄影帶即可治療草甘的疾病!
影片一開始,在旁邊跳來跳去的草甘突然停了下來,專注地盯著電視螢幕。
原來這是二十一年前International Turtle-stacking Olympiad(世界疊烏龜 奧林匹亞大賽, ITO)的錄影帶!
只見草甘走到一塊N×M的棋盤上,這個棋盤有些格子有刺有些沒有。草甘要 在這個棋盤上放一塊正方形的地基,然後在這個地基上疊烏龜。
但是他知道,地基必須滿足下列兩個限制,否則會失去資格:1.地基的邊 緣必須貼齊棋盤格線,且必須擺放跟格線水平或垂直,不能擺斜的。2.地基覆蓋 的格子不能包含超過 C根刺,否則地基會被破壞。
草甘只要能擺下面積最大的地基就能拿到ITO金牌了!
請你幫他寫一個程式計算能擺放的最大地基邊長。
輸入說明
輸入第一行有三個正整數 N、M、C,N,M <= 2000、C <= NM。表示棋盤的大小 和地基能承受的刺的最大數量。接下來會有 N 行每行一個由 0或1組成、長度為M 的字串來描述該棋盤的模樣。1 表示該格有刺、0 表示沒有。
輸出說明
輸出只需包含一行一個非負整數 K。表示能擺放的地基的最大邊長。
範例一
輸入 5 3 5 000 111 011 000 111
輸出 3
市立建國高級中學資訊科毛毛蟲軍團製作群 編製 第6頁
輸入 7 7 0 1110111 1100011 1000001 0000000 1000001 1100011 1110111 輸出 3
關係圖。如果 A認得 B便把 A 畫一條箭頭指向 B。需要注意的是"認得"這個詞是單 方面的,"A認得 B"並不一定"B認得A"。
小乃盯著這張關係圖發呆。他想,如果存在一串序列:A, S1, S2, ..., Sk, B。且滿足每個人都"認得"他下一個人。即 A認得S1、S1認得S2、...、Si認得 Si+1、...、Sk-1認得Sk。那麼就當作 A能聯繫到 B。
如果有兩個人能互相聯繫到,那麼就把這兩個人稱作一對(pair)。
海鞘想知道,這張關係圖中共有幾對(幾個pair)呢?
輸入說明
輸入第一行有二個正整數 N、M。表示這張關係圖中共有 N 個人(或烏龜、樹朋 友)N,M <= 200000,編號1~N。然後總共有M個"認得"。接下來會有M行,每行兩 個數字Ai, Bi,表示Ai認得 Bi。
輸出說明
輸出只需包含一行一個非負整數 K。表示總共有幾個pair。
範例一
輸入 7 8 1 2 2 3 3 2 3 5 3 4 5 1 4 6 6 4
輸出 7
市立建國高級中學資訊科毛毛蟲軍團製作群 編製 第8頁