QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 256 MB 満点: 100

#69. 灯

統計

长廊上有一排 $N$ 盏灯,编号为 $1$ 到 $N$。每盏灯的状态要么是关,要么是开。有一种特殊的机制可以改变灯的状态。在一次操作中,我们可以执行以下操作之一:

  • 选择整数 $p$ 和 $q$(满足 $1 \le p \le q \le N$),将灯 $p, p + 1, \dots, q$ 全部关闭。
  • 选择整数 $p$ 和 $q$(满足 $1 \le p \le q \le N$),将灯 $p, p + 1, \dots, q$ 全部开启。
  • 选择整数 $p$ 和 $q$(满足 $1 \le p \le q \le N$),将灯 $p, p + 1, \dots, q$ 的状态翻转(关变开,开变关)。

灯的当前状态由一个长度为 $N$ 的字符串 $A$ 表示。如果第 $i$ 盏灯($1 \le i \le N$)是关的,则 $A$ 的第 $i$ 个字符为 $0$,如果是开的,则为 $1$。我们希望通过尽可能少的操作,使灯的状态变为字符串 $B$ 所表示的状态。$B$ 的第 $i$ 个字符($1 \le i \le N$)为 $0$ 表示我们希望第 $i$ 盏灯关闭,为 $1$ 表示希望其开启。

编写一个程序,给定灯的数量、当前状态和目标状态,计算达到目标状态所需的最少操作次数。

输入格式

从标准输入读取以下数据:

$N$ $A$ $B$

输出格式

向标准输出写入一行。输出应包含达到目标状态所需的最少操作次数。

数据范围

  • $1 \le N \le 1\,000\,000$。
  • $A$ 和 $B$ 是长度为 $N$ 的字符串。
  • $A$ 和 $B$ 中的每个字符均为 $0$ 或 $1$。

子任务

  1. (6 分) $N \le 18$。
  2. (41 分) $N \le 2\,000$。
  3. (4 分) $A$ 中的每个字符均为 $0$。
  4. (49 分) 无附加限制。

样例

样例输入 1

8
11011100
01101001

样例输出 1

4

说明

对于此样例输入,我们可以通过 4 次操作达到目标状态,例如:

  1. 翻转第 1, 2, 3, 4 盏灯的状态。灯的状态变为 00101100。
  2. 将第 2 盏灯开启。灯的状态变为 01101100。
  3. 翻转第 6, 7, 8 盏灯的状态。灯的状态变为 01101011。
  4. 将第 6, 7 盏灯关闭。灯的状态变为 01101001。

由于不可能在少于 4 次操作内达到目标状态,因此输出 4。

样例输入 2

13
1010010010100
0000111001011

样例输出 2

3

样例输入 3

18
001100010010000110
110110001000100101

样例输出 3

5

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download
#255EditorialOpen题解jiangly2025-12-13 00:36:03View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.