SRM 551

結果
またeasyを落とした。forループの向きが逆という自分にはよくあるミスなんだけど、どうやったら防げるんだ…。ループを見る度に向きを意識するのはちょっとコストが高すぎるし、何かもう脳みそのスタック容量不足とかそういうレベルでダメダメな気分になった。

SRM 551 250pt : ColorfulChocolates

問題概要

文字列Sが与えられる。隣接する文字を高々M回までswapできるとき、連続する同じ文字の長さの最大値を求める問題。

解法

最長なswap後の文字列を考えると、どれか一文字は動いていないと思ってよい。そうでないものも作れるが、固定した場合よりもよくはならないことが分かる。なので、固定する文字を全探索して、左側と右側に同じ文字列をk個つなげるのに必要なコストを求め、左右の和がMを越えないような最長の結合を調べればよい。

続きを読む