AT_tkppc2015_i 重要証拠 (Important evidence)

题目描述

joisino 姐姐听说学校里有一位高中生侦探,于是去找他。 见面后发现,这位侦探似乎陷入了困境。 因为他发现了一台可能作为案件关键证据的电脑,但数据已经被移除。 幸运的是,电脑上的操作日志还保存着,若能运用这些日志恢复数据,就能快速解决案件。 joisino 姐姐因为编程能力出众,被委托来恢复这些数据。 操作过程如下: 1. 一开始,有 $T$ 种不同的数据,编号从 $1$ 到 $T$。每种数据由一个位串 $S_i$ 表示。 2. 之后重复执行以下三种操作中的某一些: 1. 合并两个数据。合并后的数据是其位串的拼接,即 $S_a+S_b$。合并后,所有引用到 $a$ 和 $b$ 的变量都将指向这个新数据。如果 $e$ 和 $f$ 都指向同一数据,而后再将 $e$ 和 $g$ 合并,那么 $e$、$f$、$g$ 都将指向新数据。如果 $a$ 和 $b$ 已经合并,则跳过此操作。 2. 撤销操作,所有数据回到第 $k$ 次操作后的状态。这里的操作包括合并、撤销及输出。 3. 输出某个数据中的最大连续 $0$ 的数量。这部分信息是案件中被删除的数据,也是解开谜团的关键。 joisino 姐姐利用她的编程技巧,根据日志记录编写了一个程序来恢复数据。

输入格式

输入通过标准输入提供,格式如下: - 第一行一个整数 $T$($1 \le T \le 10^5$),表示数据种类的数量。 - 第二行一个位串 $A$($1 \le \text{length}(A) \le 10^5$),后续将用到。 - 接下来的 $T$ 行中,每行包含两个整数 $L_i$ 和 $R_i$($1 \le L_i \le R_i \le \text{length}(A)$),代表第 $i$ 种数据的位串 $S_i$ 是 $A$ 从第 $L_i$ 个字符到第 $R_i$ 个字符。 - 下一行一个整数 $Q$($1 \le Q \le 10^5$),是日志的记录数量。 - 接下来的 $Q$ 行中,每行包含 $2$ 或 $3$ 个整数,它们按时间顺序记录了日志信息。 - 若有 $2$ 个整数: - 若第一个数字是 $0$,那么第二个数字表示 $a_i$($1 \le a_i \le T$),这是要输出数据 $a_i$ 中最大连续 $0$ 的数量。如果没有 $0$,就输出 $0$。 - 若第一个数字是 $1$,那么第二个数字表示 $K$($0 \le K \le $ 当前已处理的查询数),将所有数据回到第 $K$ 次操作后的状态。 - 若有 $3$ 个整数: - 第一个数字是 $2$,接下来的两个数字是 $a_i$ 和 $b_i$($1 \le a_i, b_i \le T$),表示合并数据 $a_i$ 和 $b_i$。如果这两个数据已经合并,则忽略此操作。

输出格式

参考输入格式说明,输出时在每个输出结果末尾加一个换行符。

说明/提示

### 配分 本题包括部分得分机会。 - 数据集 1 满足 $Q \le 50$,$\text{length}(A) \le 50$,$T \le 50$,正确处理可得 10 分。 - 数据集 2 无附加限制,正确解决可得 150 分。 **本翻译由 AI 自动生成**