Решение задачи " Добиться равенства" с Codeforces

Без пояснения   Просмотров: 18


Вам даны две бинарные строки a и b равной длины. Вы можете производить над строкой a следующие операции:

Поменять два бита на позициях i и j соответственно (1≤i,j≤n), стоимость этой операции составляет |i−j|, то есть модуль разницы i и j.
Выбрать произвольную позицию i (1≤i≤n) и инвертировать (заменить 0 на 1 или 1 на 0) значение бита на этой позиции. Стоимость этой операции равна 1
Найдите минимальную стоимость, которую нужно потратить, чтобы сделать строку a равной строке b. Менять строку b не разрешается.

Код

#include "bits/stdc++.h"
using namespace std;
const int N=1e6+20;
int n,i,ans;
char a[N],b[N];
int main()
{
	scanf("%d %s %s",&n,a,b);

	for(i=0;i<n;i++){
        if(a[i]!=b[i]){
            if(a[i]==b[i+1]) i++;
            ans++;
        }
	}

	printf("%d",ans);
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться