电池的寿命
小S新買了一個(gè)掌上游戲機(jī),這個(gè)游戲機(jī)由兩節(jié)5號電池供電。為了保證能夠長時(shí)間玩游戲,他買了很多5號電池,這些電池的生產(chǎn)商不同,質(zhì)量也有差異,因而使用壽命也有所不同,有的能使用5個(gè)小時(shí),有的可能就只能使用3個(gè)小時(shí)。顯然如果他只有兩個(gè)電池一個(gè)能用5小時(shí)一個(gè)能用3小時(shí),那么他只能玩3個(gè)小時(shí)的游戲,有一個(gè)電池剩下的電量無法使用,但是如果他有更多的電池,就可以更加充分地利用它們,比如他有三個(gè)電池分別能用3、3、5小時(shí),他可以先使用兩節(jié)能用3個(gè)小時(shí)的電池,使用半個(gè)小時(shí)后再把其中一個(gè)換成能使用5個(gè)小時(shí)的電池,兩個(gè)半小時(shí)后再把剩下的一節(jié)電池?fù)Q成剛才換下的電池(那個(gè)電池還能用2.5個(gè)小時(shí)),這樣總共就可以使用5.5個(gè)小時(shí),沒有一點(diǎn)浪費(fèi)。
現(xiàn)在已知電池的數(shù)量和電池能夠使用的時(shí)間,請你找一種方案使得使用時(shí)間盡可能的長。
輸入包含多組數(shù)據(jù)。每組數(shù)據(jù)包括兩行,第一行是一個(gè)整數(shù)N?(2 ≤?N?≤ 1000),表示電池的數(shù)目,接下來一行是N個(gè)正整數(shù)表示電池能使用的時(shí)間。
對每組數(shù)據(jù)輸出一行,表示電池能使用的時(shí)間,保留到小數(shù)點(diǎn)后1位。
樣例輸出 3.0 5.5 其實(shí)這題我并不會做,看著樣例邊猜邊搞結(jié)果一遍A了。。。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int N; 4 int a[2000]; 5 int sum[2000]; 6 int main(){ 7 while(scanf("%d",&N)!=EOF){ 8 memset(sum,0,sizeof(sum)); 9 memset(a,0,sizeof(a)); 10 for(int i=1;i<=N;i++){ 11 scanf("%d",&a[i]); 12 } 13 sort(a+1,a+N+1); 14 for(int i=1;i<=N;i++){ 15 sum[i]=sum[i-1]+a[i]; 16 } 17 if(sum[N-1]>a[N]){ 18 double ans=(double)(sum[N])/(double)2; 19 printf("%.1lf\n",ans); 20 } 21 else{ 22 printf("%.1lf\n",(double)sum[N-1]); 23 } 24 } 25 return 0; 26 }
?
轉(zhuǎn)載于:https://www.cnblogs.com/CXCXCXC/p/4905633.html
總結(jié)
- 上一篇: 洛克菲勒
- 下一篇: [Machine Learning]kN