Google代码堵塞:Cookie切割器

时间:2014-04-13 02:05:07

标签: algorithm google-code cookiecutter

饼干切割器问题是否有封闭式解决方案?作为参考,这是:google page

* 已更新,以包含问题陈述

问题

在此问题中,您从0个Cookie开始。通过点击一个巨大的cookie,您可以以每秒2个cookie的速度获得cookie。只要您拥有至少C cookie,就可以购买一个cookie农场。每次你购买一个饼干农场,它会花费你C饼干,每秒给你一个额外的F饼干。

一旦你有了没有在农场度过的X饼干,你就赢了!弄清楚如果你使用最好的策略,你需要多长时间才能获胜。

实施例

假设C = 500.0,F = 4.0且X = 2000.0。以下是最佳战略的演绎方式:

您从0个Cookie开始,但每秒产生2个Cookie。 250秒后,您将拥有C = 500个饼干并且可以购买每秒产生F = 4个饼干的农场。 购买农场后,你有0个饼干,你的总饼干产量是每秒6个饼干。 下一个农场将花费500个饼干,您可以在大约83.3333333秒后购买。 购买第二个农场后,你有0个cookie,你的总cookie产量是每秒10个cookie。 另一个农场将花费500个饼干,您可以在50秒后购买。 购买第三个农场后,你有0个cookie,你的总cookie产量是每秒14个cookie。 另一个农场需要花费500个饼干,但实际上不要购买它:相反,你可以等到你有X = 2000个饼干,大约需要142.8571429秒。

总时间:250 + 83.3333333 + 50 + 142.8571429 = 526.1904762秒。

请注意,你会持续获得cookies:所以在游戏开始后0.1秒你将拥有0.2个cookie,并且在游戏开始后π秒你将拥有2个cookie。

2 个答案:

答案 0 :(得分:0)

没有。它不会有任何封闭的形式。

算法是这样的,

等待收集C多个cookie。 如果您有C多个cookie,请购买新的农场

 (X-C)/R >= X/(R+F) --- (i)

否则不要购买任何农场并继续收集饼干,直到你有许多饼干。

eqn (i)
LHS is the time for the collecting (X-C) many cookies [collected C many cookies already which I did not spend on buying a farm] with current collecting rate.

RHS is the time for collecting X many cookies with the increased collecting rate.

从我们的等式R <= F(X-C)/C

所以答案是,

C/2 + C/2+F + C/2+2F + C/2+3F + ... + C/2+NF + X/2+NF [2 + NF <= F(X-C)/C]
= C(1/2 + 1/2+F + 1/2+2F + ... + 1/2+NF) + X/2+NF = A

假设我们有一个封闭的表格来计算A

然后是F = 1, C = 1, X = K

我们A = (1/2 + 1/3 + .. + 1/2+N) + X/2+N 2+N <= (K-1)

=> (1/2 + 1/3 + .. + 1/2+N) = A - X/2+N也会有封闭的形式。

但是,{1 / N}系列的有限和没有任何封闭形式。所以这两者都没有。

答案 1 :(得分:0)

我猜有一个封闭的表格:

请注意,您必须进行比较(因为只要您可以购买另一个农场或从不购买另一个农场,这是最佳选择)

(X-C)/(2+F(n-1)) with X/(2+Fn),其中n是农场数量。

因此,您只需找到n即可解决

(X-C)/(2+F(n-1)) = X/(2+Fn)

N =(FX-2C)/ CF

如果n为正数,则表示您的解决方案为Floor(n)。否则,n = 0就是你的解决方案。

PS:&#34; 2&#34;以上可以用初始生产率代替。