d872: 過橋問題
https://zerojudge.tw/ShowProblem?problemid=d872
內容 :
有n個人想要在晚上過橋,橋上每次最多只能容許2個人行走。由於全部只有一支手電筒,所以每次2個人拿著手電筒過橋後,必須有一人再把手電筒拿回來,這樣後面的人才能繼續過橋。 每個人走路的速度不同,過橋所需的時間也因此不同。而每次過橋的那2個人,其花費的時間以較慢的那個人計算(走的快的當然要等走的慢的,因為只有一支手電筒)。你的任務是寫一個程式,安排這n個人過橋,並使得總共花費的時間最少。
輸入說明:
有多筆測試資料。每組測試資料的第一列有1個整數n,代表要過橋的人數(最多不會超過100000人)。接下來的n個整數,代表這n個人過橋所需的時間(秒),這些時間均不會超過1000秒。
輸出說明:
每組測試資料輸出的第一列為一個整數,代表這n個人過橋所需的最少時間。
第一組測資:1 2 5 10
第一組Sample最少需17秒才能讓這4個人過橋。方式為:
- 1秒、2秒的人先過橋,1秒的回來
- 5秒、10秒的過橋,2秒的回來
- 最後1秒、2秒的過橋
所以總共的時間為:2+1+10+2+2=17。
第二組測資:1 98 99 100
第二組Sample最少需299秒才能讓這4個人過橋。方式為:
- 1秒、98秒的人先過橋,1秒的回來
- 1秒、99秒的過橋,1秒的回來
- 最後1秒、100秒的過橋
所以總共的時間為:98+1+99+1+100=299。
第三組測資:1 3 6 8 12
第三組Sample最少需29秒才能讓這5個人過橋。方式為Case :
- 1秒、3秒的人先過橋,1秒的回來
- 8秒、12秒的過橋,3秒的回來
- 1秒、6秒的過橋,1秒的回來
- 最後1秒、3秒的過橋
所以總共的時間為:3+1+12+3+6+1+3=29。
範例輸入:
4
1 2 5 10
4
1 98 99 100
5
1 3 6 8 12
範例輸出:
17
299
29
過橋小遊戲
多觀察一下,會發現該怎麼過橋最好呢?