【发布时间】:2016-12-30 20:59:33
【问题描述】:
我正在努力解决以下问题:
给定一个具有 3
假设你有 D 美元,并且你在 e_i 边缘正确回答问题的机会是 p_i,那么回答该问题后预期的钱是:
2*Dp_i+1/2(D(1-p_i))=D(1/2+3*p_i/2)
找出给定图表中是否有一个简单的循环,您可以步行,并且步行后预期的钱比您开始时的钱要多。
我的方法是使用 Johnson 的算法找到所有简单的周期,然后检查是否有任何周期的预期资金超过您开始时的金额,但我一直在超时。我错过了什么吗?有没有我必须做的观察,或者我应该尝试更多地优化我的代码?
【问题讨论】:
-
我觉得这个是给 [Math Overflow] (mathoverflow.com)
-
@T-Heron 是也不是 :-) 一些数学洞察力可以提供很大帮助,但没有它,这是一个算法问题。
-
是找到一个循环还是检查循环是否存在?
-
可以使用简单的启发式方法,只考虑 p_i 足够大且系数 >= 1 的边。任何由这些边组成的循环都将具有我们正在寻找的属性。但我想知道,为什么你会得到一些超时?这是一些编程比赛的问题吗?
-
感谢您的回答。顺便说一句,它来自一个希腊编程培训网站,这就是我说我要暂停的原因,而不是来自跑步比赛