バイトの競プロメモ

主に競技プログラミング

AtCoder Regular Contest 158 A - +3 +5 +7

A - +3 +5 +7

 

メモ

問題を言い換えると

X, Y, Zが与えられて

これらに0, 1, 2の順列を足してすべての合計を同じにする操作回数の最小化を求める問題になる

簡単のためにX<=Y<=Zとすると

Z-X, Z-Y, 0

足していって差が上になるようなものを作れるか考える

以後A = Z-X, B = Z-Yとする

A, B, 0

 

ここで0,1,2を足すことを考えるよりも-1,0,1を足すことを考えた方が

全体の合計が不変になるため見通しが良かった

 

//

0,1,2 を足す場合は、

A, B, 0(A>=B)で、A <= 2Bなら一回も無駄なく作ることができる

A>2Bなら、(+2,+1,+0)をB回やって

(+2+1,  +1+2, +0+0)を必要な回数やればいい

 

類題

不変量を考えて、-1, +1, 0の操作に帰着する

C - Permutation Addition