貪心演算法 51nod排隊接水

2021-09-10 05:45:44 字數 946 閱讀 9836

n個人一起排隊接水,第i個人需要b[i]的時間來接水。

1 <= n <= 1000

0 <= b[i] <= 1000

同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。

完成接水的人會立刻消失,不會繼續等待。

你可以決定所有人接水的順序,並希望最小化所有人等待時間的總和。

收起

第一行乙個整數n

接下來n行,每行乙個整數表示b[i]

一行乙個整數,表示所有人等待時間的總和的最小值
312

3

10
這是乙個簡單的貪心問題,先介紹一下貪心演算法:

我了解的貪心演算法是一種獲得最優方案的思維或者辦法吧,它在許多題目中有運用,而運用較多的應該是條件比較多,如何獲得最優方案的問題,比如揹包問題,在佔空間與質量,甚至於價值等等方面選取最優的方案,依據目前我的接觸來看,兩種情況的較多,當然,它也有許多運用。例如kruskal演算法,一種用來查詢最小生出樹的演算法,還有用於解決同樣問題的prim演算法和boruvka演算法,dijkstra演算法等一般尋找最優方案的演算法與貪心演算法有關聯,這種思想在做題中會深有體現。

附**:

#include

#include

#include

#include

#include

using namespace std;

int g[10000],h[10000];

int main()

cout《那麼第乙個人接水的時間要三個人一起等,第二個人接水時間是兩個人一起等,最後乙個人接水時間就只有乙個人等了

那麼可以看出最前面的人接水時間最短,總共接水時間就越短,畢竟1*3+2*2+3*1<3*3+2*2+1*1,所以這是排序的根本目的,

當然這個只是涉及乙個變數,比較容易,做這個題的目的就是尋找最優化的思路,一定要分清。

51Nod 排隊接水 貪心

n n 個人一起排隊接水,第 i role presentation i i個人需要b i b i 的時間來接水。1 n 1000 1 n 1000 0 b i 1000 0 b i 1000 同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決...

51nod排隊接水

n個人一起排隊接水,第i個人需要b i 的時間來接水。1 n 1000 0 b i 1000 同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決定所有人接水的順序,並希望最小化所有人等待時間的總和。input 第一行乙個整數n 接下來n行,每行...

51NOD 貪心演算法專題 C 接水問題二

n個人一起排隊接水,第i個人的重要性是a i 需要b i 的時間來接水。1 n 100000 0 b i 1000 0 a i 1000 同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決定所有人接水的順序,並希望最小化所有人等待時間乘以自己的...