Cards

382 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
382
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cards

  1. 1. Cards 原案:komiya 解答:komiya, uwi
  2. 2. 問題概要● N枚のカードが表向きに並んでいる。● 表になっているカードを2枚選んで裏返す。● 裏になっているカードを1枚選んで裏返し、書かれ ている数字の分だけスコアを得る。● 表になっているカードが1枚しかなければ終了。● 得られるスコアの期待値を求めよ。● N ≦ 20
  3. 3. 部分点解法● “ターン開始時に表になっているカードの集合”を 状態にとってビットDPする。● 状態数: 2^n個, 状態毎の計算量: n^3個● 全体でO(2^n * n^3)
  4. 4. 満点解法1● 方針: ビットDPを高速化する。● さっきのやり方では、状態毎のO(n^3)な部分が重 すぎた。● 状態数を増やすことによって計算量を落とせる。
  5. 5. 満点解法1●  1. 裏のカードをまだ1枚も選んでない時点  2. 裏のカードから1枚だけ選んで裏返した時点  3. 裏のカードを既に2枚とも裏返した時点● それぞれの時点について、表になっているカードの 集合を状態とする。
  6. 6. 満点解法1● こうやって状態を増やすと、各状態間の遷移が O(n)個しかない。● 状態数: 3 * 2^n 個、状態毎の計算量: O(n) なので、全体の計算量はO(2^n * n)まで落ちる。● なお、O(2^n * n^2)でも通る模様。
  7. 7. 満点解法2● 期待値といえば?  → 線形性!!● 求めるものは      E[ Σ(iターン目に得られるスコア) ]      = Σ E[(iターン目に得られるスコア)]
  8. 8. 満点解法2● E[ (iターン目に得られるスコア) ] を求めたい。●  iターン目にj枚目のカードを表にひっくり返す確率 を p[i, j]とする。● 確率の対称性より、 p[i, j] = 1 / n● したがって、  E[ (iターン目に得られるスコア) ]    = Σ p[i, j] * X[j]     = Σ 1/n * X[j]     = 1/n * Σ X[j] = (カードの数の平均値)
  9. 9. 満点解法2● 以上をまとめると、    E[ Σ(iターン目に得られるスコア) ]      = Σ E[(iターン目に得られるスコア)]      = Σ (カードの数の平均値)      = (カードの数の平均値) * (n – 1)● 平均値を求めるだけでよいので、線形時間!● ビットDPより実装も簡単!

×