题目
小S新买了一个掌上游戏机,这个游戏机由两节5号电池供电。为了保证能够长时间玩游戏,他买了很多5号电池,这些电池的生产商不同,质量也有差异,因而使用寿命也有所不同,有的能使用5个小时,有的可能就只能使用3个小时。显然如果他只有两个电池一个能用5小时一个能用3小时,那么他只能玩3个小时的游戏,有一个电池剩下的电量无法使用,但是如果他有更多的电池,就可以更加充分地利用它们,比如他有三个电池分别能用3、3、5小时,他可以先使用两节能用3个小时的电池,使用半个小时后再把其中一个换成能使用5个小时的电池,两个半小时后再把剩下的一节电池换成刚才换下的电池(那个电池还能用2.5个小时),这样总共就可以使用5.5个小时,没有一点浪费。现在已知电池的数量和电池能够使用的时间,请你找一种方案使得使用时间尽可能地长。
首先我先吐槽一下已经存在的许多题解:题目标个“贪心”,可是解题时根本没用贪心,都是直接用的结论。如果有人知道这题怎么用贪心来解,还望告知一下。(翻了这么多题解,一个真正用贪心法的都没找到,气死我了。)
下面我来讲一下这题的结论:
① 先将电池按时长尽可能平均分为两组(两组差值最小) \text{\footnotesize ① 先将电池按时长尽可能平均分为两组(两组差值最小)} ① 先将电池按时长尽可能平均分为两组(两组差值最小)
② { 1》 如果恰好均分(差值为0),则 最大时长 = 所有电池总时长 / 2 2》 无法恰好均分时,如果较大一边的电池有两个及以上,则 最大时长 = 所有电池总时长 / 2 3》 无法恰好均分时,如果较大一边的电池只有一个,则 最大时长 = 较小一边电池总时长 \text{\footnotesize ②} \left\{ \begin{array}{l} \text{\scriptsize 1》 如果恰好均分(差值为0),则 \bf最大时长 = 所有电池总时长 / 2} \\ \text{\scriptsize 2》 无法恰好均分时,如果较大一边的电池有两个及以上,则 \bf最大时长 = 所有电池总时长 / 2} \\ \text{\scriptsize 3》 无法恰好均分时,如果较大一边的电池只有一个,则 \bf最大时长 = 较小一边电池总时长} \\ \end{array} \right. ②⎩⎨⎧1》 如果恰好均分(差值为0),则 最大时长 = 所有电池总时长 / 22》 无法恰好均分时,如果较大一边的电池有两个及以上,则 最大时长 = 所有电池总时长 / 23》 无法恰好均分时,如果较大一边的电池只有一个,则 最大时长 = 较小一边电池总时长
证明
1》正确性显然;下面同时证明 2》3》:
当无法恰好均分时, 记较大的一边与较小一边的差为
X
X
X:
则较大一边中的任意电池时长不小于
X
X
X,否则总可以将这个电池放入另一边,使得两边差值变小,从而原先的差值并不是最小,与假设矛盾。
既然较大一边中任意一块电池时长都不小于
X
X
X,那我总可以任选两块电池,一起使用
X
/
2
X/2
X/2 时长,这样,较大一边的总时长就会降低
X
X
X,两边总时长相等,变为 1》的情况。