問題はこちら
問題概要
長さの数列とが与えられる. となるを選んでをに変更する. この操作を何回か行ってにできるとき, 最小操作回数を求めよ.思考の流れ
隣り合ったものに対して操作を行う場合, 隣り合ったものの差を考えるとうまくいくことがある. 今回の問題で言う「差」は, 排他的論理和である.とすると, に対して操作を行うと, 操作後のの値をとして
への操作はのスワップ操作に対応できた.
したがって, とすると, スワップしてにできるかという問題になる. これは典型で, BITやSegmentTreeを用いることでで求めることができる.