zoukankan      html  css  js  c++  java
  • 电池的寿命

    电池的寿命

    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1229
    时间限制: 1000 ms         内存限制: 65536 KB

    【题目描述】

    小S新买了一个掌上游戏机,这个游戏机由两节5号电池供电。为了保证能够长时间玩游戏,他买了很多5号电池,这些电池的生产商不同,质量也有差异,因而使用寿命也有所不同,有的能使用5个小时,有的可能就只能使用3个小时。显然如果他只有两个电池一个能用5小时一个能用3小时,那么他只能玩3个小时的游戏,有一个电池剩下的电量无法使用,但是如果他有更多的电池,就可以更加充分地利用它们,比如他有三个电池分别能用3、3、5小时,他可以先使用两节能用3个小时的电池,使用半个小时后再把其中一个换成能使用5个小时的电池,两个半小时后再把剩下的一节电池换成刚才换下的电池(那个电池还能用2.5个小时),这样总共就可以使用5.5个小时,没有一点浪费。

    现在已知电池的数量和电池能够使用的时间,请你找一种方案使得使用时间尽可能的长。

     

    【输入】

    输入包含多组数据。每组数据包括两行,第一行是一个整数N(2≤N≤1000),表示电池的数目,接下来一行是N个正整数表示电池能使用的时间。

    【输出】

    对每组数据输出一行,表示电池能使用的时间,保留到小数点后1位。

    【输入样例】

    2
    3 5
    3
    3 3 5
    

    【输出样例】

    3.0
    5.5

    题解:由于电池可以拆分使用,故尽量拆成相等两堆,但如果其中一个巨大,剩下的加起来都不足与之抗衡,则不能拆分;
    注意:此题的数据不止3和5;
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int a[1005];
    int main()
    {
        int n;
        while(cin>>n)
        {
            int maxx=0,tot=0;
            for(int i=1;i<=n;i++)
            {
                cin>>a[i];
                maxx=max(maxx,a[i]);
                tot+=a[i];
            }
            if(tot-maxx<maxx)printf("%.1f
    ",(tot-maxx)*1.0);
            else printf("%.1f
    ",tot/2.0);
        }
    }
  • 相关阅读:
    论语言思维的差异
    lua经典问题
    跳槽的故事
    未来一年计划
    腾讯面试题 找重复的数
    nodejs学习
    node记录
    mysql 常用总结
    ubuntu 服务器搭建汇总
    ubuntu下安装golang
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/7858264.html
Copyright © 2011-2022 走看看