ACM 電池的壽命(貪心)

2021-09-10 16:11:01 字數 1035 閱讀 5579

此題,可惜了~

附上原題:

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

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

首先,先關注一下最長的加黑字。這段字就是在暗示我們,同部分揹包問題中,物品可分割的情況一樣,多餘的電池也可以「分割」(但是是有條件的!!!會在**中講解),其次,「可能」就表明,電池的壽命並不是只有3或者5,還可能是非常大的,或是非常小的,總之是不固定的!!!

先看下**:

#include

#include

using namespace std;

double a[1005];

int main()

else

}// printf("%lf %lf\n",sum,ma);

if(ma>sum-ma) //這個就是電池「分割」的條件了,如果最大的那個比其餘所有電池的壽命之和還大,則不可以對大的分割(比如,3,5或者100,33,33,33)

printf("%.1lf\n",sum-ma); //因此,此時最大用時為其餘電池壽命之和

else

printf("%.1lf\n",sum/2.0); //否則,則將總數除以2就好了(因為電池要成對使用,此時每個電池都可以「分割」)

}return 0;

}

小結:注意揹包問題「分割」的條件。

貪心 電池的壽命

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

電池的壽命(貪心)

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

電池壽命問題 (貪心)

題目描述 小s新買了乙個掌上遊戲機,這個遊戲機由兩節5號電池供電。為了保證能夠長時間玩遊戲,他買了很多5號電池,這些電池的生產商不同,質量也有差異,因而使用壽命也有所不同,有的能使用5個小時,有的可能就只能使用3個小時。現在已知電池的數量和電池能夠使用的時間,請你找一種方案使得使用時間盡可能的長。題...