atcoder#AGC045B. [AGC045B] 01 Unbalanced

[AGC045B] 01 Unbalanced

题目描述

文字列 S S が与えられます. S S の各文字は,0,1,? のいずれかです.

S S に含まれる全ての ?01 に変えて(? ごとに変換後の文字を選択できます),文字列 S S' を作ることを考えます. ここで,S S' のアンバランス度を,次のように定義します.

  • S S' のアンバランス度 = max { S =\ \max\ \{\ S' l l 文字目から r r 文字目までに含まれる 0 の個数と 1 の個数の差の絶対値 : 1  l  r  S} :\ 1\ \leq\ l\ \leq\ r\ \leq\ |S|\}

S S' のアンバランス度としてありうる最小の値を求めてください.

输入格式

入力は以下の形式で標準入力から与えられる.

S S

输出格式

S S' のアンバランス度としてありうる最小の値を出力せよ.

题目大意

给定一个由 00 , 11?? 组成的字符串,对于这个这个字符串,我们可以选择将 ?? 变成 0011 。我们规定这个字符串的不平衡度为 SSSS 满足 $S = max \left\{l到r中0的个数和1的个数的差的绝对值\right\}(1 \leq l,r \leq len)$

你需要最小化最大的平衡度

0??
1
0??0
2
??00????0??0????0?0??00??1???11?1?1???1?11?111???1
4

提示

制約

  • 1  S  106 1\ \leq\ |S|\ \leq\ 10^6
  • S S の各文字は 0,1,? のいずれかである.

Sample Explanation 1

S= S'= 010 とすれば,アンバランス度は 1 1 になり,これが最小です.