zoukankan      html  css  js  c++  java
  • 电池的寿命(贪心)

    2469:电池的寿命

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    小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
    【思路】:orz这就是要我吐血的题。。。调了好久。。。。因为我开了个数组。。。我什么错明天再说
    我先贴代码ORZ
    等等 思路。。。
    贪心问题 不要在意过程,要在意结果。。。因为是贪心嘛,所以不要想什么时候换电池,要想怎么玩的时间长
    而 贪心问题一般知道关心两种情况)——总结至网友
    (1)最大时间的电池,大于其他所有电池时间之和;那样你就一直用其他电池耗这块时间长的巨无霸电池,所以时间就是除去最大时间电池
    的其他时间之和
    (2)最大时间的电池,小于其他所有电池之和,那样所有的电池一定能耗完且没有浪费,且时间为总时间的一半。(小生不才,解释不了为什么,试了试似乎是这个样子的哦orz)
    -------------------贴代码啦---------------------------
    【代码酱】
     1 #include<iostream>
     2 #include<cstdio>
     3 int main()
     4 {
     5 int n,sum,max,x;
     6 while (scanf("%d",&n)!=EOF)
     7 {
     8 sum=0;max=0;
     9 for (int i=1;i<=n;i++)
    10 {
    11 scanf("%d",&x);
    12 sum+=x;
    13 max=max>x?max:x;
    14 }
    15 if(max>=sum-max)printf("%.1lf
    ",(double)sum-max);
    16 else
    17 printf("%.1lf
    ",sum/2.0);
    18 }
    19 }

    //懒得注释了orz

    要吐血了
    【】我终于知道我之前一直调但是错的原因了,是因为我定义了一个time数组,和stl里的函数名重了;
    qnbbd,算了运气不好学到了
  • 相关阅读:
    Java面试中常问的Spring方面问题(涵盖七大方向共55道题,含答案)
    Node.js环境搭建
    Node.js的开源博客系统Ghost搭建教程
    探讨一个“无法创建JVM”的问题(已解决)
    Spring Boot快速入门
    Spring Boot开发Web应用
    Spring Boot工程结构推荐
    元类的剖析和单例
    多态的简单剖析、内置方法和异常的解读
    面向对象的解释和属性查找的方式解读
  • 原文地址:https://www.cnblogs.com/zzyh/p/6648359.html
Copyright © 2011-2022 走看看