NYOJ0047 過河問題

2021-08-17 17:13:38 字數 798 閱讀 7986

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:5描述

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

第一行是乙個整數t(1<=t<=20)表示測試資料的組數

每組測試資料的第一行是乙個整數n(1<=n<=1000)表示共有n個人要過河

每組測試資料的第二行是n個整數si,表示此人過河所需要花時間。(0輸出

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

樣例輸入

1

41 2 5 10

樣例輸出

17

乙個貪心問題,需要注意的是當過河人數大於3人時,最快與次快過河後,需要比較 最快接最慢過河然後再接次慢過河 與 最快返回河的另一端最慢和次慢過河然後次快回去接最快 這兩種情況所需時間的多少,選擇較小的一種,以下為**

#include #include #define min(x,y) x>=y?y:x

int a[1010];

int main()

if( n==3 )

sum += a[0]+a[n-1];

} printf( "%d\n",sum );

}}

nyoj過河問題

貪心思想 當 n 1 是 時間a 1 當n 2時 時間是a 1 a 2 當 n 3時 時間是 a 1 a 2 a 3 當 n 4時 可以有兩種方法 1 用最小的運送兩個最大的,然後再回來運送最後乙個人了 2 將兩個最小的先運送過去,在返回運送兩個最大的 所以可以遞迴下去 如下 include def...

貪心 nyoj 過河問題

思路 一 當只有乙個人時,t 此人過河所需要花的時間 二 當有兩個人時,t 走得比較慢的那個人單獨行動時所需的時間 三 當有三個人時,最快的和最慢的先過 t3 最快的回來 t1 最快的和中間那個一起走 t2 所以總時間為t t1 t2 t3 四 當有四個人時,分兩種情況 四個人的時間已從小到大排列,...

nyoj 47 過河問題

時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 在漆黑的夜裡,n位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋去的。不幸的是,n個人一共只帶了乙隻手電筒,而橋窄得只夠讓兩個人同時過。如果各自單獨過橋的話,n人所需要的時間已知 而如果兩...