Official

K - Keep or Gamble Editorial by p2mitanai


以下では、得点はカードを表向きにした瞬間に発生して、ネコのカードを表向きにしたら得点が \(0\) 点に戻るものとします。

ある状態から一度だけ操作Aを行ったときの、得点の増減の期待値を考えます。

\(F=2U + T\) とします。これはこのゲームにおいて獲得できる最大の得点に等しいです。また、現在の得点を \(X\)、残っているカードの枚数を \(R\) とします。

増える得点の期待値は、まだ獲得していない得点を枚数で割って \(\frac{F-X}{R}\) と求められます。 減る得点の期待値は、確率 \(\frac{C}{R}\)\(X\) 点を失うので、 \(\frac{CX}{R}\) と求められます。 よって、増える得点の期待値が減る得点の期待値を上回る条件は \(X\lt\frac{F}{C+1}\) となります。

もしこの条件を満たしているなら操作Aを行うべきです。もしこの条件を満たしていないのであれば、この後操作を続けてもこの条件が満たされることはないので、操作Bを行うべきです。

以上より、ゲーム全体の最適戦略は、\(X\lt\frac{F}{C+1}\) である間操作Aを行い続け、\(X\geq\frac{F}{C+1}\) となったら操作Bを行うことだとわかります。

ネコのカードを表向きにする場合を除いて、\(\lceil\frac{F}{C+1}\rceil\) 点で終了する場合、\(\lceil\frac{F}{C+1}\rceil+1\) 点で終了する場合の2通りが考えられるので、それぞれの期待値を求めて足し合わせれば答えが求まります。

パンダはないものとして扱ってよく、ユニコーンの枚数によってfor文を回すことで、\(O(U+T+C)\) で求めることができます。

posted:
last update: