水銀メモ_________φ

外部記憶装置として再開

CodeForces #8VCVentureCup : D. Jerry's Protest

Problem - D - Codeforces

問題

ツボの中に重複のない番号の書かれたボールがn個入っている。
Andrew Jerryはこのツボの中から同時にボールを一つだけ無作為に選びとり、
番号の大きい方が勝者となる。(選んだボールはツボにまた戻す)

このゲームを3回連続で行った時、
最初の2回は Andrewが勝ち最後の1回は Jerryが勝ったとする。
3回のゲームを通して Jerryの出た番号の和が Andrewより大きくなる確率を求めよ。

解法

dcを以下のように定義し
勝者が敗者にi枚差・i以上差をつけて勝つパターン数を事前に求める。
cdの累積和から得ることができる。

  • d[i] := 1回の勝負で勝者が敗者にi枚差をつけて勝つパターン数
  • c[i] := 1回の勝負で勝者が敗者にi枚以上差をつけて勝つパターン数

d,cより以下の場合の数を、差の最大値(5000)の2重ループで求める。
1戦目. Andrewi枚差をつけてJerryに勝った
2戦目. Andrewj枚差をつけてJerryに勝った
3戦目. Jerryi+j+1枚以上差をつけてAndrewに勝った
d[i] * d[j] * c[i+j+1]

最後に、条件を満たすパターンの総数を、全パターン {(\frac{n*(n-1)}{2})}^3 で割ればよい。

全体の計算量は O(n^2 + a_{max}^2)となる。

ソース