ARC128 参加記録
コンテスト中AC:A,B
A - Gold and Silver
を折線グラフで考えたとき、下に凸な頂点で金に交換、上に凸な頂点で銀に交換し、それ以外では何もしないのが最適です。
始点と終点は例外なので、のとき、以下のようにします。
1.金を持っているとき
なら、まだ上がりつづける可能性があるのでなにもしません。
そうでない時、銀と交換して翌日以降の下がったときに金に交換した方が今より金の枚数を多くできるので、銀に交換します。
2.銀を持っているとき
金の時と逆パターンです。
なら、まだ下がりつづける可能性があるのでなにもしません。
そうでない時、翌日以降に金と交換するより金の枚数を多くできるので、金に交換します。
最後に、の時点で銀を持っているなら金に交換します。
これに基づいて操作列を求めることができます。
提出コード:
https://atcoder.jp/contests/arc128/submissions/26587504
B - Balls of Three Colors
3色の内、2色を同数とする必要があります。
をに割り当て、をと同数にすることにします。
そのような割り当て方法は6通りなので全探索できます。
とします。
なら、同数にすることは不可能です。
3回までの操作で達成できる増加減の列を書き出してみます。((0, 0, 0)を除く)
・1回
(+2, -1, -1)
・2回
(+4, -2 -2), (+1, +1, -2)
・3回
(+6, -3, -3), (+3, 0, -3)
まずわかることは、1回の操作でとの差は3ずつ縮まるということです。
よって、が3の倍数でない時、同数とすることは不可能です。
3の倍数である場合、必要な操作回数は、回です。
操作が何回できるかは、に依存します。
よって、なら同数にすることができ、その操作回数は、同数にするための回と、0にするのに回が必要になり、操作回数の合計回です。
のとき、そのままでは同数にすることができません。ここで、2回操作を見ると、を+1しつつを-2できるので、必要な操作回数を1回減らしつつ、操作可能回数を+1できます。
まず、であれば、2回操作を一度もできないので、同数とすることは不可能です。
そうでない場合、回、2回操作すれば、後は(+2, -1, -1)で同数とすることができます。
よって、分2回操作すると、となり、回でを同数にでき、更に回で0にできます。
したがって、式を整理すると回必要になります。
提出コード:
https://atcoder.jp/contests/arc128/submissions/26597979