Re: [問題] 烏龜塔問題

作者: ddavid (謊言接線生)   2019-03-08 01:53:24
※ 引述《nicknick0630 (NICK)》之銘言:
: 烏龜塔問題 :
: 有 N 隻烏龜,第 i 隻重 Wi 克且有 Si 的力量,代表他可以負載 Si - Wi 的重量在背上
: 求由這 N 隻烏龜可以疊出的最大高度?
假設已知正確答案疊出了高度m,由上而下所有重量與力量如下:
重量 W1 W2 ... W(m-1) Wm
力量 S1 S2 ... S(m-1) Sm
考慮其中某一層k,依題意,他的力量能夠撐起包括自己在內的上層所有重量:
Sk >= W1 + W2 + ... + W(k-1) + Wk
假設k這隻事實上比他上一層(k-1)那隻力量還小:
S(k-1) > Sk
得到:
S(k-1) > Sk
>= W1 + W2 + ... + W(k-1) + Wk
發現其實(k-1)這隻也可以抬得動這k層全部的重量。另外:
Sk >= W1 + W2 + ... + W(k-2) + W(k-1) + Wk
> W1 + W2 + ... + W(k-2) + Wk
理所當然地,k當然也抬得動這k層少了(k-1)那隻的重量。
也就是說原本的排序:
1 2 ... (k-1) k ... m
改成:
1 2 ... k (k-1) ... m
也就是這兩層對調也不會有任何問題,k跟(k-1)都還是抬得動。
因此,每當相連的上層比下層有力時,把這兩層對調一定不會發生問題。反覆這
樣的操作,我們必然可以將順序調整成下層比上層有力而仍然不發生問題(可經由泡
沫排序法實際操作得到),因此必然存在一組最佳解是力量可以依序由上而下剛好是
由小到大,而這組解可由力量排序的DP得到。
作者: nicknick0630 (NICK)   2019-03-08 09:45:00
謝謝大大精闢的解說那請問大大 可以用通則的方式來證明用重量排序去算答案會是錯的嗎? 因為我只會舉範例但想不太到怎麼證明
作者: ckc1ark (偽物)   2019-03-08 10:26:00
有反例就算是證明了
作者: cutekid (可愛小孩子)   2019-03-08 11:30:00
推 d 大詳細說明

Links booklink

Contact Us: admin [ a t ] ucptt.com