제출 #1159490

#제출 시각아이디문제언어결과실행 시간메모리
1159490KK_1729Lamps (JOI19_lamps)C++17
4 / 100
17 ms26008 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define pb push_back
#define all(a) a.begin(), a.end()
// #define endl "\n"

void printVector(vector<int> a){
	for (auto x: a) cout << x << " ";
	cout << endl;
}


void solve(){
	int n; cin >> n;
	string a, b; cin >> a >> b;

	vector<int> A(n+5), B(n+5);
	FOR(i,1,n+1){
		if (a[i-1] == '0') A[i] = 0;
		else A[i] = 1;

		if (b[i-1] == '0') B[i] = 0;
		else B[i] = 1;
	}	


	int prev1 = 0; int prev2 = 0;
	int prev3 = 0;
	vector<int> dp(n+5, 1e9);
	dp[0] = 0;
	FOR(i,1,n+1){
		// if (i == 8) cout << prev1 << prev2 << endl;
		dp[i] = min(dp[i], dp[prev1]+1);
		if (A[i] == B[i]) prev1 = i;
		if (A[i] != B[i]) prev3 = i;
		int t = 0;
		if (prev3 > prev2) t = 1;
		dp[i] = min(dp[i], dp[prev2]+t);

		
		if (B[i] != B[i+1]) prev2 = i;
	}
	// printVector(dp);
	cout << dp[n] << endl;
}


int32_t main(){
	ios::sync_with_stdio(false);cin.tie(nullptr);
	int t = 1; // cin >> t;
	while (t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...