开关游戏
题号:NC53275
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

题目译自 JOISC 2019 Day3 T2「ランプ / Lamps

走廊里有N盏灯,灯依次编为号。灯要么处于开启状态,要么处于关闭状态。
你有三种操作:
  • ON操作:选择两个整数p,q,关闭号灯;
  • OFF操作:选择两个整数p,q,打开号灯;
  • TOG操作:选择两个整数p,q,将号灯的状态取反(开→关,关→开)。
给出开始时灯的亮暗状态(0表示关闭,1表示开启),再给出目标状态,试求至少需要几次操作灯才能从开始状态变为目标状态。

输入描述:

从标准输入中读入三行,第一行一个正整数N。接下来两行分别为灯的初始状态和目标状态,保证均为长度为N的01序列。

输出描述:

输出到标准输出,一行一个整数,表示从开始状态变为目标状态的最少操作数。

CC-BY-SA,感谢LOJ分享,译文来自 https://loj.ac/problem/3037
示例1

输入

复制
8
11011100
01101001

输出

复制
4

说明

\newcommand \u{ \; \! \!} \tt1 \u1 \u0 \u1 \u1 \u1 \u0 \u0 \xrightarrow{ \large TOG(1,4)}0 \u0 \u1 \u0 \u1 \u1 \u0 \u0 \xrightarrow{ \large ON(2,2)}0 \u1 \u1 \u0 \u1 \u1 \u0 \u0 \xrightarrow{ \large TOG(6,8)}0 \u1 \u1 \u0 \u1 \u0 \u1 \u1 \xrightarrow{ \large OFF(6,7)}0 \u1 \u1 \u0 \u1 \u0 \u0 \u1
示例2

输入

复制
13
1010010010100
0000111001011

输出

复制
3
示例3

输入

复制
18
001100010010000110
110110001000100101

输出

复制
5

备注:

对于所有数据,

CC-BY-SA,感谢LOJ分享,译文来自  https://loj.ac/problem/3037