KeyTo9_Fans 发表于 2015-11-5 21:29:02

收集指定数量资源所需的最短时间

一开始我们拥有1个基地、4个工人,50点水晶矿。

我们想在尽可能短的时间内收集到`10^{100}`点水晶矿。

对于每个工人来说,他可以采矿或建造,但同一时间只能干1件事,不能同时干2件事。

如果进行采矿,那么

  每工作10秒就可以采集8点水晶矿。

  需要注意的是,水晶矿的采集不是连续的,

  采集工作只进行9.999...9秒并不会获得任何水晶矿,

  在进行了10秒的时候才会一次性获得8点水晶矿。

如果进行建造,那么有以下2种设施可供选择:

  1. 基地:建造1个新的基地需要先行消耗400点水晶矿,然后连续工作120秒即可建成。

    每建成1个基地,那么工人数目的上限+10。

    (一开始我们拥有1个基地,工人数目的初始上限是10。)

    如果当前的工人数目未达到上限,

    那么基地可以先行消耗50点水晶矿,进入雇佣工人状态。

    一旦一个基地进入雇佣工人状态,那么工人的数目立刻+1。

    雇佣工人状态持续20秒后,方可获得1个新的工人,

    此时该基地回到空闲状态,可以在工人数目未达到上限的前提下,

    再次消耗50点水晶矿和20秒的时间雇佣1个新的工人。

  2. 供给站:建造供给站需要先行消耗100点水晶矿,然后连续工作30秒即可建成。

    每建成1个供给站,那么工人数目的上限+8。

    除此之外,供给站没有别的用途了。

需要注意的是:

  只要工人数量足够,可以同时建造多个设施,但每个设施只能由1名工人建造。

  只要不超过人数上限,多个基地可以同时进入雇佣工人状态。

  水晶矿不能透支,必须要有足够的水晶矿才可以开始雇佣工人或建造设施。

#####

以下是最快收集100点水晶矿的实例:

4个工人一起采矿20秒,获得64点水晶矿,

加上初始的50点水晶矿,就有了114点水晶矿。

因此只用了20秒就达成了目标。

#####

以下是最快收集1000点水晶矿的实例:

一开始就让基地雇佣工人,所有工人都去采矿。

基地连续雇佣了6个新的工人后,

工人的数目达到了10的上限,不能再雇佣了。

此后就坐等目标达成。

于是耗时200秒,

采集了8*(4+4+5+5+6+6+7+7+8+8+9+9+10*8)=1264矿,

减去雇佣花费300矿,加上初始的50矿,等于1014矿,达成了目标。

#####

问:至少需要多少时间才能收集到`10^{100}`点水晶矿?

#####

附加说明:除了目标是自行设定之外,以上所有数据全部来自《星际争霸1》游戏,并非胡编乱造。

KeyTo9_Fans 发表于 2015-12-6 15:23:37

为了方便大家解题,我把这个问题做成了一个游戏。

#####

下载以下两个附件:




解压后就可以玩这个游戏了。

注意:需要把两个压缩包放在一起,才可以将里面的文件解压出来。

#####

操作说明:

该游戏的目标是用尽可能短的时间采集到指定数量的资源。

如下图所示,所有用红色方框标出的地方都可以用鼠标点击。



此外,还可以使用以下键盘按键进行操作:

上、下、左、右、退格,回车
0,1,2,3,4,5,6,7,8,9
A,B,R,G,H,W,S,L

#####

如果是纯手工操作,建议完成$10^5$以内的小目标即可,否则需要耗费大量的操作。

如果想达成更高的目标,建议编写程序,生成操作脚本,然后使用游戏里的 “Load” 功能读取脚本。

如果达成了$10^100$的目标,请将成绩展示给大家,看看谁的用时最短。

hujunhua 发表于 2015-12-7 10:24:25

10^100:o, 据说宇宙中的原子数也没这么多。

hujunhua 发表于 2015-12-7 15:19:04

建议把基地改成矿井。要不都成基地分子了:L

供给站和矿井的关系不太明白。如果现在有 1 个矿井和 1 个 供给站,这个矿井就可以让18个工人同时采矿么?
还是一个矿井只有10个工位,只能容纳10人同时采矿,多的工人只能从事扩建工作?
页: [1]
查看完整版本: 收集指定数量资源所需的最短时间