过桥
.
.
.
.
.
分析
最容易想到的一個貪心策略是:
讓一個最快的人來回帶人但是顯然是錯誤的
比如4個人:1 1 100000 100000
最快的來回帶的話要:1+1+100000+1+100000=200003
但是如果先將1 1運過去的話,然后1回來,再讓100000 100000一起過去,再讓右邊的1來回一趟,就只要1+1+100000+1+1=100004,這樣顯然更優
所以第一種貪心的策略顯然是不合理的,下面換種貪心策略:
首先,慢的肯定是過了橋之后不回來了
就上面那種情況,我們就是先將最快的兩個帶過去,
然后快的一個過來,讓兩個慢的過去,然后讓快的再來,…
然而:
如果是1 10000 10000 10000,答案又不對了(還是第一種策略優)
結合以上兩點,對于最慢的兩個人我們有兩種處理方法就是:
1、讓最快的人來回帶
2、讓最快的兩個人過去,再讓最慢的兩個一起過去,這樣就減少了最慢的重復計算
關于這個貪心策略的證明是:
首先,過橋速度排在第三名之后的人不可能擔任送回手電筒的任務,
原因是不如速度第一和第二的人送回來得高效。這樣,
當前左岸速度最慢的人過橋后就不可能再回來,
那么我們可以優先讓速度慢的過河,因為其不可能返回,先過后過等效。
如此一來,就可以得到上述的貪心策略。
.
.
.
.
.
程序:
轉載于:https://www.cnblogs.com/YYC-0304/p/10292828.html
總結