發表文章

ZeroJudge I859: Can You Solve It?

圖片
題目敘述 每筆測資第一行有一個正整數N,接下來會有N行,每行會有四個正整數,分別代表起點和終點的x和y座標。根據笛卡爾坐標系,需要按照以下所示的箭頭路徑從一個圓圈移動到另一個圓圈。 例如,要從 (0, 3) 到 (3, 0),您必須經過兩個中間圓 (1, 2) 和 (2, 1)。 所以,在這種情況下,所需的總步數是 2 + 1 = 3。 要求輸出從起點走到終點需要走幾步。 範例輸入 #1 3 0 0 0 1 0 0 1 0 0 0 0 2 範例輸出 #1 Case 1: 1 Case 2: 2 Case 3: 3 解題思路 如果把步數標出來的話,可以發現Y軸 (橫軸) 的步數是 0 --> 1 --> 3 --> 5 --> 9,以此類推。舉例來說,當x+y等於2的時候,可以發現這些點都落在 (0, 2) 這個點的斜線上,更可以發現 (1, 1) 這個點是 (0, 2) 的步數+1,也就是其x座標。同理,(2, 0) 的步數就是 (0, 2) 的步數+2。 可以先設定一個陣列,並將 0、1、3、6、10...等數字存放到Y座標 (橫軸) 的位置上。收資料的時候判斷x+y是多少就找這個位置的步數然後加上x座標的值。

ZeroJudge D150: Shopaholic

題目敘述 每筆測資第一行有一個正整數T,代表接下來會有T筆資料。每筆資料第一行會有一個正整數N,下一行會有N個正整數代表N個商品的價錢。商品是買二送一,省下來的錢會是最便宜的那個商品之價錢。要求輸出可以省下的最多費用。 範例輸入 #1 1 6 400 100 200 350 300 250 範例輸出 #1 400 解題思路 將每個商品的價錢收到一個Vector或陣列中,收完之後使用Sort來排序。再來跑For迴圈,從最大跑到最小,以每三個為單位,並將目前位置減2的價錢加到答案中。

ZeroJudge D105: 傳球遊戲

題目敘述 每筆測資有兩個正整數N和M,代表有N個人圍成一個圓圈,以及要傳球M次。每次傳球只能傳給左右兩邊的人。要求輸出有幾種傳球方法可以傳M次之後傳回第一個人手上。 範例輸入 #1 3 3  範例輸出 #1 2 解題思路 使用BFS來處理,每一次計算球要傳給誰,並且將每個起點的次數進行加總,可以利用Map來做存取,並且每次跑BFS的時候都回傳這個Map,當BFS的次數等於M時就將第一個人的Map值輸出。

ZeroJudge D260: Behold my quadrangle

題目敘述 每筆測資第一行有一個正整數N,接下來會有N行,每一行會有四個正整數代表四邊形的四個邊長。要求輸出是否是「正方形」、「長方形」、「四邊形」、或是「無法形成四邊形」。 範例輸入 #1 4 10 8 7 6 9 1 9 1 29 29 29 29 5 12 30 7 範例輸出 #1 quadrangle rectangle square banana 解題思路 將四個邊長收到Vector中,並且進行排序。 正方形:四邊等長 長方形:前兩邊相等、後兩邊相等 四邊形:前三個邊的和「大於」第四個邊 非四邊形:Else

ZeroJudge D659: Cost Cutting

題目敘述 每筆測資第一行有一個正整數T,接下來會有T行,每行會有三個正整數,代表三個人的薪資。要求輸出排序後中間的人的薪資。 範例輸入 #1 3 1000 2000 3000 3000 2500 1500 1500 1200 1800 範例輸出 #1 Case 1: 2000 Case 2: 2500 Case 3: 1500 解題思路 將三個數字收到Vector或陣列中,然後進行排序,再將第一個位置的資料 (中間的資料) 輸出即可。

ZeroJudge C203: DPA Numbers I

題目敘述 每筆測資第一行有一個正整數T,接下來會有T行,每行會有一個正整數N。要求輸出N是Perfect、Deficient、或Abundant。 Perfect:所有因數的和 (包含1,不包含自己) 等於自己 Deficient:所有因數的和  (包含1,不包含自己) 小於自己 Abundant: 所有因數的和  (包含1,不包含自己) 大於自己 範例輸入 #1 10 5 6 16 18 21 28 29 30 40 43 範例輸出 #1 deficient perfect deficient abundant deficient perfect deficient abundant abundant deficient 解題思路 使用For迴圈判斷每一個數字的因數,如果N除以目前迴圈跑到的數字 (i) 之餘數等於0,i 就是N的因數。進行加總之後判斷是小於、等於、還是大於。

ZeroJudge D267: Letter Frequency

題目敘述 每筆測資第一行有一個正整數N,接下來會有N行,每行會有一個包含空格字元的字串。要求輸出出現次數最多的英文字母,大小寫視為同一個字母,輸出時請輸出小寫,如果有出現次數相同的情況則由小到大輸出。 範例輸入 #1 1 Computers account for only 5% of the country's commercial electricity consumption. 範例輸出 #1 co 解題思路 先將每個字母出現的次數存放到一個Map中,接下來用Auto跑這個Map的For迴圈,並且再開一個新的Map (Key是int,Value是Vector<char>)。將舊的Map中的值乘以-1當作是新的Map的Key,並將字元Push_Back到新的Map的Value中。之後一樣用Auto跑新的Map的For迴圈,先將Vector進行排序後將裡面的字母輸出,然後就可以Break這個For迴圈因為只要輸出最多次數的字母而已。