题意:就是有个用两个电池的电器 输入一些电池的电量
问我们在这种条件下 最多能用多少电量
比如 三节电池 4 4 7
那么 4 4->3.5 3.5 ->3.5 7->0 3.5 ->3.5 3.5 ->0 0
换7 换成3.5
分析: 应考虑如何才能最大化的使用电池 也就是尽可能的用光电池?
由于情况比较多 我们分类讨论下
1 如果有一个电量超多的电池 使得剩下的电池加起来不大于巨型电池的电量 那么我们直接就输出剩下电池的电量
2 如果差距没有这么悬殊 我们应该尽可能的把大号电池的电量降下来 这样才能尽可能地用光所有电量 通过其他电池 让所有电池逐渐趋于平缓 这样就能尽可能的
消耗掉所有电池的电量 最终我们发现所有的电池组合都能变成(1,1,1),(1,1,0)。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int main()
{
int n;
int *a = new int[1010];
while(~scanf("%d",&n)){
for(int i=1;i<=n;++i){
scanf("%d",&a[i]);
}
sort(a+1,a+1+n);
int sum=0;
for(int i=1;i<n;i++)
sum+=a[i];
if(sum<=a[n])printf("%.1f\n",sum*1.0);
else printf("%.1f\n",(sum+a[n])/2.0);
}
delete []a;
return 0;
}