sos sos sos 995

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 个赞

这道题可以用贪心:

#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 个赞

时间复杂度为O(nt)

4 个赞

谢谢,但是我昨天就AC了 :crazy_face: :stuck_out_tongue: :blush: :blush: :smiley: :grin:

3 个赞

我难道不是昨天发的?

4 个赞