2. (10分) 乙隻小兔子有100根胡蘿蔔, 它要走50公尺才能到家, 每次它最多搬50根胡蘿蔔, 而每走1公尺就要吃掉1根胡蘿蔔, 請問它最多能把多少根胡蘿蔔搬到家裡?
3. (10分) 有任意種水果, 每種水果個數也是任意的, 兩人輪流從中取出水果, 規則如下:
1) 每一次應取走至少乙個水果; 每一次只能取走一種水果的乙個或者全部.
2) 如果誰取到最後乙個水果就勝.
給定水果種類 n和每種水果的個數 m1, m2, ..., mn, 算出誰取勝.
time to rack your brain, dude.
[carrot problem]
一旦折返, 折返的路程上花費為 3c/m; 不折返的話花費為 1c/m.
因此需要盡量減小折返,確保最後不折返的時候帶的蘿蔔盡量多(上限50個).
假設總折返距離為 x(m), 有 100 - 3x <= 50, 即 x >= 50 / 3
最後剩下的蘿蔔個數為: (100 - 3x) - (50 - x) = 50 - 2x <= 50 / 3
因此, 至多剩下16個蘿蔔(只能取整數的話), 此時折返路程為17m.
能取分數的話直接取等號就行了, 不再贅述.
[fruit problem]
我用歸納法做出來的. 之前想了很多情況想直接推理出來, 但是越弄越亂.
我一開始沒有注意到乙個事實:
此題為求必勝策略的題, 每次取水果之前的必勝與否是由取之後的必敗與否決定的.
因此應該先進行從簡單到複雜的遞推, 然後歸納找規律.
假設兩個人分別為 a 和 b, a 先取水果.
記水果總個數為 m (即 m1 + m2 + ... + mn). 開始分情況討論:
(1) 有 1 種水果
a 必勝(2) 有 2 種水果
此時兩個人都不敢全部拿走一種水果, 因為那樣會送對方進入(1)的必勝態, 自己必敗.(3) 有 3 種水果所以兩個人都只能乙個乙個拿, 這樣誰拿走最後乙個就由 m 的奇偶性決定.
若 m 是奇數, a 必勝; 否則 a 必敗.
a先取, 他有足夠的主動權, 讓 b 進入(2)的必敗態.(4) 有 4 種水果如果 m 是奇數, 說明至少有一種水果有奇數個, 全部取走這一種水果後, b 就會進入(2)中的必敗態(m' 為偶數), 因此, a 必勝;
如果 m 是偶數, 由於 n 為 3, 因此至少有一種水果有偶數個, 全部取走這一種水果後, b 就會進入(2)中的必敗態(m' 為偶數), 因此, a 必勝;
綜上,a 必勝
a 先取, 他不敢全部取走一種, 因為會送 b 進入(3)的必勝態, a 就必敗.因此 a 只能取乙個.
a) 若 a 取走這乙個就變成(3)了, 說明 4 種水果都只有乙個(否則 a 可以避免取走一種).
此時m 為偶數 4 且 a 必敗.
b) 若 a 取完這乙個還剩 4 種水果, 那 b 同上分析也只敢取乙個.
依次類推, 誰最後面對a)的情況就必敗了.
因此勝負由 m - 4 的奇偶性決定, 它與 m 的奇偶性相同. (其實(2)中也可以想成由 m - 2 的奇偶性決定)
若 m 為奇數, a 必勝; 否則 a 必敗.
綜合 a) 與 b)若 m 為奇數, a 必勝; 否則 a 必敗.至此, 已經可以看到規律了.
1. 若 n 為奇數, a 必勝;
2. 若 n 為偶數且 m 為奇數, a 必勝;
3. 否則 a 必敗.
形象點兒的話, 用乙個表描述.
"奇"代表"有奇數個水果的品種數", "偶"含義類似
"勝負"為 1 代表 a 必勝, 0 代表 a 必敗
九度 1107 搬水果
題目描述 在乙個果園裡,小明已經將所有的水果打了下來,並按水果的不同種類分成了若干堆,小明決定把所有的水果合成一堆。每一次合併,小明可以把兩堆水果合併到一起,消耗的體力等於兩堆水果的重量之和。當然經過 n 1 次合併之後,就變成一堆了。小明在合併水果時總共消耗的體力等於每次合併所耗體力之和。假定每個...
搬水果 貪心演算法實現
1 題目描述 在乙個果園裡,小明已經將所有的水果打了下來,並按水果的不同種類分成了若干堆,小明決定把所有的水果合成一堆。每一次合併,小明可以把兩堆水果合併到一起,消耗的體力等於兩堆水果的重量之和。當然經過 n 1 次合併之後,就變成一堆了。小明在合併水果時總共消耗的體力等於每次合併所耗體力之和。假定...
九度OnlineJudge 搬水果(1107)
題目描述 在乙個果園裡,小明已經將所有的水果打了下來,並按水果的不同種類分成了若干堆,小明決定把所有的水果合成一堆。每一次合併,小明可以把兩堆水果合併到一起,消耗的體力等於兩堆水果的重量之和。當然經過 n 1 次合併之後,就變成一堆了。小明在合併水果時總共消耗的體力等於每次合併所耗體力之和。假定每個...