結果

問題 No.3114 0→1
ユーザー Naru820
提出日時 2025-04-14 15:19:37
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 10 ms / 2,000 ms
コード長 541 bytes
コンパイル時間 3,288 ms
コンパイル使用メモリ 273,488 KB
実行使用メモリ 7,844 KB
最終ジャッジ日時 2025-04-15 20:43:41
合計ジャッジ時間 4,752 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int n,dp[200001][2][2];
string s;
int main(){
	cin >> n >> s;
	for(int i = 0; i <= n; i++){
		for(int j = 0; j < 4; j++){
			dp[i][j / 2][j % 2] = 1e9;
		}
	}
	dp[0][1][1] = 0;
	for(int i = 0; i < n; i++){
		int now = s[i] - '0';
		for(int j = 0; j < 4; j++){
			dp[i + 1][j % 2][1] = min(dp[i + 1][j % 2][1],dp[i][j / 2][j % 2] + 1 - now);
		}
		if(now == 0) dp[i + 1][1][0] = min(dp[i + 1][1][0],dp[i][1][1]);
	}
	cout << min(dp[n][0][1],min(dp[n][1][0],dp[n][1][1]));
}
0