解説
なら Alice、それ以外なら Bob が勝ちます。
弦で区切られた異なる領域の点を結ぶことはできないため、各領域に残る未使用の点の数を考えます。 Alice が点数 の領域に弦を引くと、その両側の点数は となります。 Bob は片側から点を選び、その側をさらに二つの領域に分けます。
点数が の領域がある場合、Alice は勝てます。
点数が なら、その二点を結ぶだけで Bob は操作できません。 点数が 以上なら、Alice は両側の点数が と になるように弦を引きます。 どちらも で割った余りが なので、Bob がどちら側を選んでも、もう片側に同じ条件の領域が残ります。 これを繰り返すと、点数が減り続け、最後には点数 の領域で勝てます。
逆に、そのような領域がない場合、Bob はその状態を維持して勝てます。
Alice が弦を引いた両側の点数を とします。 元の点数は で割った余りが ではないので、 がともに余り になることはありません。 Bob は余り の側があればそちらを、なければ点が残っている側を選びます。
選んだ側の点数を とすると、Bob は点 の位置を調整して、残る二領域の点数を次のようにできます。
- なら、 と 。
- それ以外なら、 と 。
いずれも余り の領域は生じません。 したがって Bob は常に操作でき、いずれ Alice が操作できなくなります。
計算量はテストケースごとに です。
ユーザー解説
ユーザー解説を書くユーザー解説はまだありません。