#33229: 解題思路


harlivy_forever (噴火水雞肉飯)


開一個大小為m的vector代表m個水龍頭,分別放m個水龍頭裝水花的總時間,重複挑出裡面最小值加上下一個裝水的人花的時間。以範例一為例:

原本的vector:4 4 1

排序:1 4 4 (1最小,代表這個位置的水龍頭最快空出來)

加上下個人:3(1+2) 4 4 

排序:3 4 4 

加上下個人:4(3+1) 4 4 

所有人都裝完水,從vector中挑出最大者(最慢裝完水):4

 

 

#34042: Re: 解題思路


wubaie (小億)


開一個大小為m的vector代表m個水龍頭,分別放m個水龍頭裝水花的總時間,重複挑出裡面最小值加上下一個裝水的人花的時間。以範例一為例:

原本的vector:4 4 1

排序:1 4 4 (1最小,代表這個位置的水龍頭最快空出來)

加上下個人:3(1+2) 4 4 

排序:3 4 4 

加上下個人:4(3+1) 4 4 

所有人都裝完水,從vector中挑出最大者(最慢裝完水):4

 

 

C++ 優先佇列:
priority_queue<int,vector<int>, greater<int>> pq;