CF1037C Equalize
题目描述
给定两个长度相同的二进制字符串 $a$ 和 $b$。你可以对字符串 $a$ 执行以下两种操作:
- 交换任意两个下标为 $i$ 和 $j$ 的比特($1 \le i, j \le n$),该操作的代价为 $|i - j|$,即 $i$ 和 $j$ 的绝对差。
- 选择任意一个下标 $i$($1 \le i \le n$),将该位置的比特翻转(将 $0$ 变为 $1$ 或 $1$ 变为 $0$),该操作的代价为 $1$。
请你求出将字符串 $a$ 变为字符串 $b$ 的最小总代价。字符串 $b$ 不允许被修改。
输入格式
第一行包含一个整数 $n$($1 \le n \le 10^6$),表示字符串 $a$ 和 $b$ 的长度。
第二行和第三行分别为字符串 $a$ 和 $b$。
字符串 $a$ 和 $b$ 均由 $n$ 个字符组成,仅包含 '0' 和 '1'。
输出格式
输出一个整数,表示将字符串 $a$ 变为字符串 $b$ 的最小总代价。
说明/提示
在第一个样例中,一种最优方案是翻转第 $1$ 位和第 $3$ 位,字符串 $a$ 变化如下:"100" $\to$ "000" $\to$ "001"。总代价为 $1 + 1 = 2$。
另一种最优方案是交换第 $1$ 位和第 $3$ 位的比特,字符串 $a$ 变化为 "100" $\to$ "001",总代价为 $|1 - 3| = 2$。
在第二个样例中,最优方案是交换第 $2$ 位和第 $3$ 位的比特,字符串 $a$ 变化为 "0101" $\to$ "0011",总代价为 $|2 - 3| = 1$。
由 ChatGPT 4.1 翻译