NYOJ 47 過河問題 【貪心】

NYOJ 47 過河問題

描述

在漆黑的夜裏,N位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋去的。不幸的是,N個人一共只帶了一隻手電筒,而橋窄得只夠讓兩個人同時過。如果各自單獨過橋的話,N人所需要的時間已知;而如果兩人同時過橋,所需要的時間就是走得比較慢的那個人單獨行動時所需的時間。問題是,如何設計一個方案,讓這N人儘快過橋。 

輸入

第一行是一個整數T(1<=T<=20)表示測試數據的組數
每組測試數據的第一行是一個整數N(1<=N<=1000)表示共有N個人要過河
每組測試數據的第二行是N個整數Si,表示此人過河所需要花時間。(0<Si<=100)

輸出

輸出所有人都過河需要用的最少時間

樣例輸入

1
4
1 2 5 10

樣例輸出

17

額,剛開始只想到用時最短的人往返接送其他人,算的結果是2+1+5+1+10=19

解題思路:

n==1 || n==2 直接過去

n==3  最快+最慢過去,最快回來,最快和第三個人過去

n==4   對n個人用時進行sort排序,a[0]<a[1]<a[2]<a[3]<...<a[n-2]<a[n-1]

方案一:最快的人往返接送其餘所有人。a[n-1]+a[0]+a[n-2]+a[0]+a[1]

方案二:用時最短和用時第二短的人一起過去,然後用時最短的人把手電筒帶回來,然後用時最長和用時第二長的人一起過去,用時第二短的人回來。 a[1]+a[0]+a[n-1]+a[1]+a[1]

 

 

發佈了95 篇原創文章 · 獲贊 16 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章