CF1661E Narrow Components
题目描述
给定一个由 $3$ 行 $n$ 列组成的矩阵 $a$。矩阵中的每个单元格要么是空闲的,要么是被占用的。
如果至少满足以下条件之一,则空闲单元格 $y$ 可以从空闲单元格 $x$ 到达:
- $x$ 和 $y$ 共享一条边;
- 存在一个空闲单元格 $z$,使得 $z$ 可以从 $x$ 到达,且 $y$ 可以从 $z$ 到达。
一个连通块是指矩阵中一组空闲单元格,这些单元格两两可达,并且加入任意其他空闲单元格都会破坏这个性质。
你需要回答 $q$ 个关于该矩阵的询问。每个询问如下:
- $l$ $r$ —— 统计由矩阵 $a$ 的第 $l$ 列到第 $r$ 列(包含)组成的子矩阵中的连通块数量。
请输出所有询问的答案。
输入格式
第一行包含一个整数 $n$($1 \le n \le 5 \cdot 10^5$),表示矩阵 $a$ 的列数。
接下来的三行,每行包含一个长度为 $n$ 的字符串,描述矩阵 $a$ 的第 $i$ 行。每个字符为 $1$(表示空闲单元格)或 $0$(表示被占用单元格)。
接下来一行包含一个整数 $q$($1 \le q \le 3 \cdot 10^5$),表示询问的数量。
接下来的 $q$ 行,每行包含两个整数 $l_j$ 和 $r_j$($1 \le l_j \le r_j \le n$),表示第 $j$ 个询问。
输出格式
输出 $q$ 个整数,第 $j$ 个数表示对于第 $j$ 个询问,子矩阵中连通块的数量。
说明/提示
由 ChatGPT 4.1 翻译