電池的壽命
總時間限制: 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對於貪心問題,從解題的過程來看我們應該是更應該關注結果,而不應該關注過程或者方法。對於這道題而言,我們就不能關心他到底是在什麼時候換電池的,而應該只關心電池到底能用多久。
一般來講,貪心都要關心至少兩種情況,這道題也如此。
如果乙個電池的壽命大於其他所有電池壽命之和,很明顯,電池的壽命就是其他所有電池壽命之和。但如果最大電池壽命小於其他所有電池壽命之和呢?仔細思考一下,我們始終使用剩餘壽命最長的兩個電池,相當於是讓電池剩餘壽命更短,剩餘壽命越短意味著利用率越高。在最大電池壽命小於其他所有電池壽命之和的時候,根據這樣的演算法,所有電池都能夠用完,電池的總壽命=壽命之和/2。
反觀一來我們想到的簡單情況,事實上也是一種特殊情況,在一直使用剩餘壽命最長的電池的條件下始終都用了使用壽命最長的那個電池,思路來講是一樣的,只是因為結果不同,寫出來的**也就不同。
#include
#include
#include
#include
#include
#include
using
namespace
std;
int main()
sort(battery,battery+a);
if(sum-battery[a-1]>battery[a-1])
else
}return
0;}
電池的壽命(貪心)
電池的壽命 總時間限制 1000ms 記憶體限制 65536kb 描述 小s新買了乙個掌上遊戲機,這個遊戲機由兩節5號電池供電。為了保證能夠長時間玩遊戲,他買了很多5號電池,這些電池的生產商不同,質量也有差異,因而使用壽命也有所不同,有的能使用5個小時,有的可能就只能使用3個小時。顯然如果他只有兩個...
電池壽命問題 (貪心)
題目描述 小s新買了乙個掌上遊戲機,這個遊戲機由兩節5號電池供電。為了保證能夠長時間玩遊戲,他買了很多5號電池,這些電池的生產商不同,質量也有差異,因而使用壽命也有所不同,有的能使用5個小時,有的可能就只能使用3個小時。現在已知電池的數量和電池能夠使用的時間,請你找一種方案使得使用時間盡可能的長。題...
ACM 電池的壽命(貪心)
此題,可惜了 附上原題 小s新買了乙個掌上遊戲機,這個遊戲機由兩節5號電池供電。為了保證能夠長時間玩遊戲,他買了很多5號電池,這些電池的生產商不同,質量也有差異,因而使用壽命也有所不同,有的能使用5個小時,有的可能就只能使用3個小時。顯然如果他只有兩個電池乙個能用5小時乙個能用3小時,那麼他只能玩3...