SRM561:div1 medium CirclesGame
先輩にgrundy数を教えてもらったりしたので少し前に解いた。
↓参考 もとい問題概要も書いてある
Nimber(グランディー数, grundy数) メモ - antaの競技プログラミング練習日記
問題概要
- 二次元の平面上に円がたくさん与えられます。
- 任意の点を選ぶとその点を包含する円を全て消せます。
- AliceとBobが互いに円を消し合って最後に消した方の勝ち。どっちが勝つ?
- かならず円を消さなければない。
- 円は交差することはない(包含はある)
解法
- 円aに包含される円bに対し b->a のエッジを貼る。
- するとDAGがいくつか出来ます。
- 各々のDAGにgrundy数を求めxorを取ったものが0なら後攻、1なら先行の勝利
- DAGの処理が結構複雑
ソースコード
感想
grundy数使う問題の解き方は割りと理解できた。
ただ、今回みたいなのはグラフの処理が複雑ですごい手間取った。
グラフマスターへの道は遠い。