#11050: 解題心得


a5083 (assassin刺客大師)

學校 : 新北市立板橋高級中學
編號 : 28347
來源 : [140.116.138.99]
最後登入時間 :
2017-06-27 17:13:56
d872. 過橋問題 -- UVa10037簡易版 | From: [140.123.56.238] | 發表日期 : 2016-06-14 09:34

解題思路
首先我們可以把題目給的數字由大到小排序變成 arr[0] arr[1] arr[2] arr[3] arr[4] ....
簡單來說這題就是要靠 速度最快的arr[0]及arr[1]來協助過橋

當只有一個人(特殊情況)時
     則花費時間必為arr[0]

當只有兩個人時
     則花費時間必為arr[1]

當只有三個人時
     則情況變為->(第0人和第1人一起過橋) + (第0人回來原岸) + (第0人和第2人一起過橋)
     所以總時間是 arr[1] + arr[0] + arr[2]

當情況變成四人以上時
     我們這裡先以四人為例
     花費最短時間過河的方法有兩種
     (1) (第0人和第1人一起過橋) + (第0人回來原岸) + (最慢的兩個人一起過橋) + (第1人回到原案) -> 最慢的兩人已到對岸,最快的兩人在原岸
                      arr[1]            +           arr[0]   +           arr[3]             +      arr[1]



     (2) (第0人和最慢的人一起過橋) + (第0人回來原岸) + (第0人和倒數第二慢的人過橋) + (第0人回到原案) -> 最慢的兩人已到對岸,最快的兩人在原岸
                      arr[3]               +        arr[0]       +                arr[2]               +       arr[0]

       這兩種方法中取最快的方法來當作最慢的兩個人過橋所需花費的最短時間


       所以現在原岸只剩兩人,所以現在變成情況二只有兩人的狀況,最短時間加上arr[1]即為答案

     以五人為例
     花費最短時間過河的方法有兩種
     (1) (第0人和第1人一起過橋) + (第0人回來原岸) + (最慢的兩個人一起過橋) + (第1人回到原案) -> 最慢的兩人已到對岸,最快的兩人在原岸
                        arr[1]          +         arr[0]     +           arr[4]             +         arr[1]

     (2) (第0人和最慢的人一起過橋) + (第0人回來原岸) + (第0人和倒數第二漫的人過橋) + (第0人回到原案) -> 最慢的兩人已到對岸,最快的兩人在原岸
                     arr[4]                 +      arr[0]        +            arr[3]                   +     arr[0]

         這兩種方法中取最快的方法來當作最慢的兩個人過橋所需花費的最短時間


        所以現在原岸只剩三人,所以現在變成情況三只有三人的狀況,最短時間加上arr0]+arr[1]+arr[2]即為答案

        之後6、7、8...人都是用這種規則延續下去

        就是每次都把"原岸最慢的兩個人"送過河,而且最快的兩個人一定會回到原岸

        當原岸只剩兩個人或三個人後就停止

        並加上兩人或三人所需的過橋時間 即為答案

 
#11072: Re:解題心得


a5083 (assassin刺客大師)

學校 : 新北市立板橋高級中學
編號 : 28347
來源 : [140.116.138.99]
最後登入時間 :
2017-06-27 17:13:56
d872. 過橋問題 -- UVa10037簡易版 | From: [140.123.56.238] | 發表日期 : 2016-06-19 16:25

解題思路
首先我們可以把題目給的數字由大到小排序變成 arr[0] arr[1] arr[2] arr[3] arr[4] ....
簡單來說這題就是要靠 速度最快的arr[0]及arr[1]來協助過橋

當只有一個人(特殊情況)時
     則花費時間必為arr[0]

當只有兩個人時
     則花費時間必為arr[1]

當只有三個人時
     則情況變為->(第0人和第1人一起過橋) + (第0人回來原岸) + (第0人和第2人一起過橋)
     所以總時間是 arr[1] + arr[0] + arr[2]

當情況變成四人以上時
     我們這裡先以四人為例
     花費最短時間過河的方法有兩種
     (1) (第0人和第1人一起過橋) + (第0人回來原岸) + (最慢的兩個人一起過橋) + (第1人回到原案) -> 最慢的兩人已到對岸,最快的兩人在原岸
                      arr[1]            +           arr[0]   +           arr[3]             +      arr[1]



     (2) (第0人和最慢的人一起過橋) + (第0人回來原岸) + (第0人和倒數第二慢的人過橋) + (第0人回到原案) -> 最慢的兩人已到對岸,最快的兩人在原岸
                      arr[3]               +        arr[0]       +                arr[2]               +       arr[0]

       這兩種方法中取最快的方法來當作最慢的兩個人過橋所需花費的最短時間


       所以現在原岸只剩兩人,所以現在變成情況二只有兩人的狀況,最短時間加上arr[1]即為答案

     以五人為例
     花費最短時間過河的方法有兩種
     (1) (第0人和第1人一起過橋) + (第0人回來原岸) + (最慢的兩個人一起過橋) + (第1人回到原案) -> 最慢的兩人已到對岸,最快的兩人在原岸
                        arr[1]          +         arr[0]     +           arr[4]             +         arr[1]

     (2) (第0人和最慢的人一起過橋) + (第0人回來原岸) + (第0人和倒數第二漫的人過橋) + (第0人回到原案) -> 最慢的兩人已到對岸,最快的兩人在原岸
                     arr[4]                 +      arr[0]        +            arr[3]                   +     arr[0]

         這兩種方法中取最快的方法來當作最慢的兩個人過橋所需花費的最短時間


        所以現在原岸只剩三人,所以現在變成情況三只有三人的狀況,最短時間加上arr0]+arr[1]+arr[2]即為答案

        之後6、7、8...人都是用這種規則延續下去

        就是每次都把"原岸最慢的兩個人"送過河,而且最快的兩個人一定會回到原岸

        當原岸只剩兩個人或三個人後就停止

        並加上兩人或三人所需的過橋時間 即為答案


更正

首先我們可以把題目給的數字由排序變成 arr[0] arr[1] arr[2] arr[3] arr[4] .... 

 

抱歉打錯了

 
ZeroJudge Forum