D - Handstand

  • image
  • 考えたこと
    • 反転させる領域が重なってる時、同じ結果をもたらす重なってない反転方法があるから、重なってないと仮定しても差し支えない 区間が交わらないとしてよい
    • よって、K個の0の塊をひっくり返して、1番長い1の塊を作れば良い
    • 先頭と末尾に長さ0以上の1の塊があるとみなす、条件分岐をなくすため。
    • i番目の1の塊の始点と、i+k番目の1の塊の終点の距離が最大になるところを求めればいい
    • 線形時間で始点と終点を列挙して、線形時間で最大値を求める
  • 公式解説OK