2469 電池的壽命 4 6演算法之貪心)

2021-08-07 22:37:28 字數 1045 閱讀 2422

總時間限制: 1000ms 記憶體限制: 65536kb

描述 小s新買了乙個掌上遊戲機,這個遊戲機由兩節5號電池供電。為了保證能夠長時間玩遊戲,他買了很多5號電池,這些電池的生產商不同,質量也有差異,因而使用壽命也有所不同,有的能使用5個小時,有的可能就只能使用3個小時。顯然如果他只有兩個電池乙個能用5小時乙個能用3小時,那麼他只能玩3個小時的遊戲,有乙個電池剩下的電量無法使用,但是如果他有更多的電池,就可以更加充分地利用它們,比如他有三個電池分別能用3、3、5小時,他可以先使用兩節能用3個小時的電池,使用半個小時後再把其中乙個換成能使用5個小時的電池,兩個半小時後再把剩下的一節電池換成剛才換下的電池(那個電池還能用2.5個小時),這樣總共就可以使用5.5個小時,沒有一點浪費。

現在已知電池的數量和電池能夠使用的時間,請你找一種方案使得使用時間盡可能的長。

輸入 輸入包含多組資料。每組資料報括兩行,第一行是乙個整數n (2 ≤ n ≤ 1000),表示電池的數目,接下來一行是n個正整數表示電池能使用的時間。

輸出 對每組資料輸出一行,表示電池能使用的時間,保留到小數點後1位。

樣例輸入

2 3 5

3 3 3 5

樣例輸出

3.0

5.5

當壽命最長的電池的壽命小於其他所有電池壽命之和,則所有電池的電量總是可以用完的。

因為在用多個「低電量電池」拼湊」高電量電池」時,可調整「低電量」的使用時間,使得剩餘電量可以用光。

而當壽命最長的電池壽命高於其他所有電池壽命之和,最終可用時間則為除最高電量外的所有電池壽命之和。

#include

#include

using

namespace

std;

////同樣是參考的,每次一看思路,怎麼就這麼簡單就想不到呢

int n,a;

int main()

if(m>c-m)

else

printf("%.1f\n",(double)c/2);

}}

N 2469電池的壽命

2469 電池的壽命 總時間限制 描述 輸入 輸出 樣例輸入 2 3 5 3 3 3 5 樣例輸出 3.05.5 1000ms 記憶體限制 65536kb 小s新買了乙個掌上遊戲機,這個遊戲機由兩節5號電池供電。為了保證能夠長時間玩遊戲,他買了很多5號電池,這些電池的生產商不同,質量也有差異,因而使...

貪心 電池的壽命

電池的壽命 總時間限制 1000ms 記憶體限制 65536kb 描述 小s新買了乙個掌上遊戲機,這個遊戲機由兩節5號電池供電。為了保證能夠長時間玩遊戲,他買了很多5號電池,這些電池的生產商不同,質量也有差異,因而使用壽命也有所不同,有的能使用5個小時,有的可能就只能使用3個小時。顯然如果他只有兩個...

電池的壽命(貪心)

電池的壽命 總時間限制 1000ms 記憶體限制 65536kb 描述 小s新買了乙個掌上遊戲機,這個遊戲機由兩節5號電池供電。為了保證能夠長時間玩遊戲,他買了很多5號電池,這些電池的生產商不同,質量也有差異,因而使用壽命也有所不同,有的能使用5個小時,有的可能就只能使用3個小時。顯然如果他只有兩個...