求解 电池的寿命编程问题

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



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



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

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

...全文
387 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
betty 2011-09-06
  • 打赏
  • 举报
回复
这个是我AC的代码。
思想是:这个问题的关键点提示有给出,就是电量是否能用完,能用完的话 直接总和除以2就是答案,这样来说那么就是找出不能用完的情形就可以。。
如何找不能用完的呢?
一开始我是从N=2开始举例,然后加上猜想,发现只有当前N-1个数的和小于最后一个数时是无法用完的,而当大于等于时,总有方式能用完。所以就得出上面这个代码了。
代码很简单,因为G++对浮点数的处理很怪,所以我索性就直接自己处理这块了。。。
betty 2011-09-06
  • 打赏
  • 举报
回复

#include<iostream>
#include<algorithm>
#include<stdio.h>

using namespace std;

bool cmp(int a,int b)
{
if (a<b)
return true;
return false;
}
int main()
{
int N;
int data[1005];
int i;
int sum;
//cin>>N;
while(cin>>N)
{
sum = 0;
for(i=0;i<N;i++)
cin>>data[i];
sort(data,data+N,cmp);

for(i=0;i<N-1;i++)
sum+=data[i];

if(sum<data[N-1])
cout<<sum<<".0"<<endl;
else
{
sum +=data[N-1];
if(sum%2==0)
cout<<sum/2<<".0"<<endl;
else
cout<<sum/2<<".5"<<endl;
}


}
return 0;
}
yifuzhiming 2011-09-06
  • 打赏
  • 举报
回复
看到这种问题就想睡觉了
hoppboy 2011-08-05
  • 打赏
  • 举报
回复
这是openjudge 上一道题目。求高手
icansaymyabc 2011-08-05
  • 打赏
  • 举报
回复
而且充电过程是均匀发生在3个小时内,并非发生在短命电池的电量全部耗尽之后。
icansaymyabc 2011-08-05
  • 打赏
  • 举报
回复
显然如果他只有两个电池一个能用5小时一个能用3小时,那么他能玩超过3个小时多一丁点时间的游戏(因为一个电池耗尽后,另一个电池会给它充电,就算不是充电电池,充电过程也会发生,只不过较大部分电能因此变成了热能,这样当然会大大加速另一个电池的耗电),而没有任何电池的电量会剩下。请出题的人多学一点物理知识再来出物理题好吗?
matrixcl 2011-08-05
  • 打赏
  • 举报
回复
曾经有一个题目,一个数组中有很多数,让你把它分成两个数组,是两个数组里的数字和相差尽可能小。
其实和这个是同一道题

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧