ABC046 C - AtCoDeerくんと選挙速報 / AtCoDeer and Election Report
問題
提出コード1
提出コード2
GCD求める関数書いてますが関係ないです。
解法
提出コード1は、単純に場合分けしていきます。
現在の高橋君の票数を、青木君の票数をとします。
まず、1手前と比率が同じであった場合
その回をスルーします。高橋君、もしくは青木君の票数を変えずに条件を満たすことができる場合
つまり、かつとなる場合、もしくはとを入れ替えたパターンが成り立つ場合です。
これは素直にとすればよいです。それ以外
とを計算します。
高橋君の票数が前者の値になるか、青木君の票数が後者の値になるか、の2択です。
まずは、票数が減るパターン、すなわち
、もしくはとなるパターンを排除します。これらのパターンになってしまった場合は、そうならない方を選択する必要があります。
これらのパターンにならない場合は、二人の票数を改めて計算し、票数が少なる方を選択すれば答えとなります。
想定解の提出コード2は、すごい綺麗な解法です。
かつが成り立つ最小のを求めればよいので、
を求めていけばよいです。
これを回繰り返せば、あとはを計算して答えとなります。
感想
過去に解いたときも、今回も、提出コード1のような解法で出しました。
2回とも、かなりバグらせているので、とても反省しています。
この手の問題で綺麗な立式ができるようになりたいですね…