COJN 0484 800502电池的寿命
2015-07-25 09:38
330 查看
800502电池的寿命 |
难度级别:B; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B |
试题描述 |
小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 |
其他说明 |
数据范围:输入中已经说明。 |
如果不是,窝萌可以先想一想电池是否会被用完,答案是肯定的。
证明:如果不比其它(n-1)个电池的和要大,那么窝萌这么想:先用那个最大的去削第二大的(动态更新第二大),那么早晚有一天最大的会撑不住(因为它比其他的电池和要小,不能横扫千军嘛),于是它成为了第二大。。。如此往复,那么所有的电池会经历排名逐渐提升再下降的人生,所以窝萌可以说电池的电量是平均的,然后自己再YY一下就知道电池肯定能用完。。。
那就好办了,答案就是总和除以2呗?
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<queue> #include<cstring> #define PAU putchar(' ') #define ENT putchar('\n') using namespace std; const int maxn=1000+10; int n,A[maxn]; inline int read(){ int x=0,sig=1;char ch=getchar(); for(;!isdigit(ch);ch=getchar())if(ch=='-')sig=0; for(;isdigit(ch);ch=getchar())x=10*x+ch-'0'; return sig?x:-x; } inline void write(int x){ if(x==0){putchar('0');return;}if(x<0)putchar('-'),x=-x; int len=0,buf[15];while(x)buf[len++]=x%10,x/=10; for(int i=len-1;i>=0;i--)putchar(buf[i]+'0');return; } void init(){ double ans; while(scanf("%d",&n)==1){ ans=0; for(int i=1;i<=n;i++){ A[i]=read();ans+=A[i]; }sort(A+1,A+n+1); if(A >ans-A )ans=ans-A ; else ans=ans*0.5; printf("%.1f\n",ans); } return; } void work(){ return; } void print(){ return; } int main(){init();work();print();return 0;}
相关文章推荐
- poj 2492 A Bug's Life 带权并查集
- Windows10正式版多任务管理都有哪些功能?Win10多任务管理功能介绍
- cisco 2950密码恢复
- 单点登录 .NET MVC
- [置顶] 算术表达式的语法和语义分析(算符优先分析方法生成三元式的中间代码)
- 奇葩001
- C#调用Rar文件及获取Rar返回值的方法
- linux 命令总结
- Cygwin-Cygwin ssh Connection closed by ::1 出错
- leetCode 86.Partition List(分区链表) 解题思路和方法
- 暑假学习随笔2
- mysql如何将一个表导出为excel表格
- Linux部署ASP.NET 5 (vNext)
- 动态规划,而已! CodeForces 433B - Kuriyama Mirai's Stones
- C#群发邮件
- 暑假学习随笔2
- C语言中.h和.c文件解析
- Xamarin.Android开发实践(五)
- nyoj 122Triangular Sums
- Timus Online Judge 1057. Amount of Degrees(数位dp)