P1204 电池寿命问题

425 阅读1分钟

image.png image.png

要求是:

image.png

首先我看到这题目的想法是取到所有电池最小的使用时长,比如说题目例子里的假设十节电池,从小到大依次排序,设为a[10]

然后先让第十节电池和第九节电池......

其实这题想复杂了,只要想最后的结果就行了,从结果考虑

这道题目最终就两种结果:

(1)一节电池超级耐用,比其他所有电池加起来用的都长,结果就是总时长减掉最大的那个电池

(2)还有一种情况就是没有最长的(我不管他怎么分配,最终总能找到一种分配法,能正好把时长除以二正好用完。

#include<iostream>
#include<limits>
using namespace std;
int a[1001];
int main() {
	int n;
	while(cin>>n) {
		int sum=0;
		int max=-INT_MAX;
		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;
}