nyoj 47 過河問題 貪心

2021-09-26 22:06:59 字數 1241 閱讀 2789

記憶體限制:64mb 時間限制:1000ms special judge: no

accepted:2 submit:5

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

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

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

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

複製

1

41 2 5 10

17

分析:

1、只要我們能夠保證每一步都取到時間最短的結果,那麼最後得到的結果一定是耗時最短的

2、有兩種走的方法

①、由耗時最短的帶耗時最長的

②、用耗時最長的帶耗時第二長的(當然,我們需要乙個耗時最短的兩個人去帶電燈回來)

核心**:

1

int a = a[n-1] + a[n-2] + a[0] + a[0];2

int b = a[n-1] + a[1] + a[1] + a[0];3

int c = min(a, b);

c/c++**實現(ac):

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 

1011

using

namespace

std;

12const

int maxn = 1010;13

14int

main()

1531

if (n == 3)32

36int cnt = a[1

];37

while(n > 3)38

50 printf("

%d\n

", cnt);51}

52return0;

53 }

NYOJ47 過河問題(貪心)

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

NYOJ 47 過河問題 (貪心)

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

nyoj47過河問題(貪心)

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