ARC088D Wide Flip
前提
解法
全ての要素を '0' または、全ての要素を '1' とするためには、隣接する要素が異なるような地点を全て解消する必要がある。
S[i]!=S[i+1]となるようなiの集合を P とする。
P の要素 p について考えた時、(S[i]!=S[i+1]となるようなiを新たに増やすことなく) S[p]!=S[p+1]を解消するためには以下の2操作のうちいずれかを行う必要がある。
各操作について考えると、①をすると K の上限が p+1 に、②をするとKの上限が |S|-p-2 になる。
Kの上限をできるだけ下げない方を選ぶべきなので、S[p]!=S[p+1]を解消することにより K の上限はmax(p+1,|S|-p-2)となる。P の要素全てにおいてこれを考えると、ans=min{ max(p'-1,|S|-p'-2) | p'∈P }となる。
もう少し考察すると、max(p-1,|S|-p-2)の値はpが中心に近いほど小さくなる。つまり、最も中心に近い p を一つ選び q とおくと、ans = max(q-1,|S|-q-2)としても良い。