arukukaの日記スマートフォン用の表示で見るarukukaの日記この広告は、90日以上更新していないブログに表示しています。障害点を考慮しながらゴールまでたどり着く経路の総数を求めます。移動したい、ということを図にして表すと、「カタラン数」で出てくるような経路の数え上げ問題になっていることが分かります。提示している点が通過点にないかチェックする必要があります。cまでを計算しますが途中M個の障害点を考慮してなければなりません。包除原理を考える必要がありますが、ある点から次のある点までの経路数が常に同じであるため、再利用できます。「偶数個点を通過してゴールについた経路数」を計算すれば答えになります(スタートは偶数:0個とする)。b)でソートしてあげます。同じ座標上に2点存在する場合もありますがそれを経由しようとすると組合せは0になるため、特に考える必要はありません。移動する総数はこのように、負のreptationを許す経路数から「反射」の考えでその余分な分を引くことで求められます。(自分も完璧に理解できていませんが、詳しくは下記書籍を読んでください。自分はこれのおかげでなんとかACまで持って来れました。CodeChefとなります。沈む時刻が最後の方から最小全域木を構成していくと良さそう(座圧して、時刻が同じものはグルーピングしておく)。最初に沈むところまで終えて、Union-Findが全部同じ親を持つかチェックしてダメだったら0を出せばいいのかな。これでは4番目のサンプルケースが合わない(金額が高くついてしまった)。普通に最小全域木にしたらコストはどうなるのだろうと思ってやってみたらサンプルと一致する。