OpenJ_Bailian - 3468 数字规律|贪心

13 篇文章 0 订阅
3 篇文章 0 订阅

 题意:就是有个用两个电池的电器 输入一些电池的电量

问我们在这种条件下 最多能用多少电量

比如 三节电池 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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值