CF868D Huge Strings
题目描述
给定 $n$ 个仅由 $0$ 和 $1$ 组成的字符串 $s_1, s_2, \dots, s_n$。现有 $m$ 次操作,每次操作将任意两个已有的字符串拼接成一个新字符串。在第 $i$ 次操作时,将 $s_{a_i}$ 和 $s_{b_i}$ 拼接,生成新的字符串 $s_{n+i}$(操作编号从 $1$ 开始)。每次操作后,请你求出最大的正整数 $k$,使得所有长度为 $k$ 的 $0$ 和 $1$ 组成的字符串(共有 $2^k$ 个)都作为新字符串的子串出现过。如果没有这样的 $k$,输出 $0$。
输入格式
第一行包含一个正整数 $n$($1 \le n \le 100$)——字符串的数量。接下来 $n$ 行,每行一个仅由 $0$、$1$ 组成的字符串 $s_1, s_2, \dots, s_n$($1 \le |s_i| \le 100$)。所有字符串的总长度不超过 $100$。
接下来一行包含一个正整数 $m$($1 \le m \le 100$)——操作的次数。接下来的 $m$ 行,每行两个正整数 $a_i$ 和 $b_i$($1 \le a_i, b_i \le n+i-1$),表示将 $s_{a_i}$ 和 $s_{b_i}$ 拼接生成 $s_{n+i}$。
输出格式
输出 $m$ 行,每行一个整数,表示每次操作后的答案。
说明/提示
在第一次操作后,新的字符串为 "0110"。对于 $k=1$,所有长度为 $1$ 的二进制字符串“0”和“1”都在新串中出现过。对于 $k=2$ 及以上,存在没有出现在新串中的长度为 $2$ 的二进制串(例如 $k=2$ 时的 "00")。因此答案是 $1$。
第二次操作后,字符串变为 "01100"。现在所有长度为 $k=2$ 的二进制串都出现过。
第三次操作后,字符串为 "1111111111"。没有 $0$,因此答案为 $0$。
由 ChatGPT 5 翻译