何铂灏
(何铂灏)
1
C. 电池的寿命
Problem ID: 9343
Contest ID: 5992
必做题
【电池的寿命】
小S新买一个掌上游戏机,这个游戏机由两节电池供电,为了保证能够长时间玩游戏,他买了很多电池,这些电池的生产厂商不同,所以电池的供电时间也不同。
若他有三个电池,一个能用5小时,另外两个能用3小时。他可以先使用两节3小时的电池0.5小时,然后将一节换成5小时的电池,2.5小时后把一节用完电池换成刚刚取下来的电池(还可以使用2.5小时),这样他总共能使用5.5个小时,没有一点浪费。
现已知电池的数量和电池的供电时间,请你找一种方案使得时间尽可能的长。
输入:
包含多组数据,每组数据两行,第一行是整数N(N不超过1000),表示电池的数量,第二行N个数据,表示每节电池的供电时间。
输出:
对每组数据输出一行,表示电池能够使用的时间,保留到小数点后一位。
样例输入:
2
3 5
3
3 3 5
样例输出:
3.0
5.5
2 个赞
tyx
(༺༺■̵̶̸̸̴̴̷̩͎̬͍̙͎͕͎̩͍͇̜͍̯̖͎̙͓̪͎͓̜̟͖͈̩͈̜̮̝̠̫̠͉̘̳̳̦͈͇̖͓̩͙̩̤͇̠̠̣͔͕̲͍̪̮̥̗̦͍͇͍͖̟͔͔̲̜̗̱̤̲̤̱̝̟͇̖͔̮͙̣͚̗̣̤̱͇͖̪͚͉̜̫̤̮͎̖̥͙̜̖̞̥͔͍̳͙̉̃̀͑͗͋̾̔̓̄̆̐̾͊̐̀̆̆̋̎̂̓̈̆̑͋͛̐̍̾̎͐̈́͋̌̾̓̌̂̿͗̂̂͗̊̇͛̾̋͂͒̉̿̾̽͛̈́̍̋͗̐͒͂̊̾͒̃̎̇͐̎̇́̅̈́͂̋̑͒́̓͆̅̓͌͗͋̏͒̽̒̉̂̔̒͆̊̐̀̈́̀͒̽̚̚ͅͅ҉再见,匹诺康尼_C++CodeIkun༻༻)
2
这道题可以用贪心:
#include<bits/stdc++.h>
using namespace std;
int a[1001];
int main() {
int n;
while(cin>>n) {
int sum=0;
int max=-1;
for(int i=1; i<=n; i++) {
cin>>a[i];
if(a[i]>max)
max=a[i];
sum+=a[i];
}
if(max>=sum-max)
printf("%.1lf\n",(sum-max)*1.0);
else
printf("%.1lf\n",sum*1.0/2);
}
return 0;
}
3 个赞