・これまでの最大の高さ以上の時:解を1増やす&最大の高さを更新する・これまでの最大の高さ未満の時:何もしないというループをまわせば良い。よって、両方のケースについて何枚塗り替える必要があるかをそれぞれカウントし、小さい方が解となる。online.atcoder.jp解法ある一定の区間の0、1を反転させることを繰り返し、連続する1をどれだけ長く出来るか、という問題です。基本的に1を反転させる意味は無いので、出来るだけ長い1の連続を作るには、1回の操作で連続する0の区間を反転させていけば良いことが分かります。ここで、連続する0の区間がK個以下であれば、全てを1に出来るので解はNになります。問題となるのは、連続する0の区間の数がKより多い場合です。仮に連続する0の区間がL個だとすると、K個からL個選ぶことになるので、全探索だと間に合いそうに無いです。そこで、次のように考えます。1の連続を長くするには、反転させる連続する0の区間は連続していた方が良いです。以下のような並びについてK=3で考えた場合、連続する0の区間は5カ所ですが、選び方は3通りしかありません。よって、しゃくとり法などを使って前から順に見ていけば、O(N)で解くことが出来ます。