Typical DP Contest:C - トーナメント
問題
https://atcoder.jp/contests/tdpc/tasks/tdpc_tournament
考え方
が優勝するときは
連勝する必要がある。以下のようにDPを定義する。
が
連勝するときの確率
が
連勝するときは、
が
連勝する確率に、対戦相手
が
連勝して、
が
に勝つ場合であるから以下のようなDP遷移を考えることができる。
は
が
に勝つ確率
DP初期値としては、 連勝は常に可能と考えて以下のようになる。
各 について、
連勝するときに戦う候補となる相手
について考える。例として以下のような
のトーナメントを考えよう。相手のみを考察するのでレートは省略する。
今 の場合に戦う相手の候補は以下となる。これは
の
ビット目以降が同じ数のうち、
ビット目が異なる数である。
の場合も同様である。
Submission #3919742 - Typical DP Contest
どこに着目して考察するべきだったか
が
連勝するときの確率と捉えるとDPが見えてくるかもしれない。また戦う相手の候補は「bitで考えて上位bitが同じ数のうち、
ビット目が異なる数」と考えるのは少しテクニックが必要な気がする。bitの性質を捉えて同じbitが同じグループに属する数はなにか?と考えると良いかもしれない。
何がバグっていたか
得た知見
- 確率DPの定義方法(一例)
- ビットで候補を計算する考え方と実装方法。
>>
と<<
を組み合わせる