No.3114 0→1
レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 156
作問者 :
jupiter_68
/ テスター :
kenken714
ponjuice
Nzt3
Naru820
タグ : / 解いたユーザー数 156
作問者 :
問題文最終更新日: 2025-04-16 06:43:50
問題文
$0$ と $1$ からなる文字列が以下の条件を満たす時、$X$ を良い文字列であると呼びます。
- 任意の $X$ の長さ2以上の連続部分文字列 $Y$ について、 $Y$ に含まれる $0$ の数が $Y$ に含まれる $1$ の数以下である。
例えば、$101$ は良い文字列です。一方、$10011$ は、部分文字列として $00$ を含みますが、この文字列に含まれる $0$ の数(2個)が $1$ の数(0個)よりも多いため、良い文字列ではありません。
$0$ と $1$ からなる長さ $N$ の文字列 $S$ が与えられます。あなたは1回の操作で、$S$ に含まれる $0$ を1つ選び、$1$ に変更することができます。
$S$ を良い文字列にするために必要な操作回数の最小値を求めてください。
制約
- $1 \leq N \leq 2 \times 10^5$
- $S$ は $0$ と $1$ のみからなる長さ $N$ の文字列
- $N$ は整数
入力
入力は、以下の形式で標準入力から与えられます。
$N$ $S$
出力
1行に、$S$ を良い文字列にするために必要な操作回数の最小値を出力し、最後に改行してください。
サンプル
サンプル1
入力
5 01001
出力
1
$S$ は良い文字列ではありません。3,4文字目からなる連続部分文字列 $00$ に含まれる $0$ の数は2個ですが、$1$ の数は0個なためです。
また、$S$ の3文字目を $1$ に変えることで、$S$ がいい文字列になることが確認できます。よって、必要な操作回数の最小値は1です。
サンプル2
入力
6 111111
出力
0
サンプル3
入力
10 1010010001
出力
3
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。