B4571 [合肥市初中组 2025 T3] 字符串

题目背景

民间数据

题目描述

小 C 有两个集合,分别为单词集 $D$ 和限制集 $R$,初始两个集合都是空集。 小 C 会进行 $m$ 次操作,操作分为以下两种: * `add s`(其中 $s$ 是一个字符串):表示向单词集 $D$ 中加入一个字符串 $s$。 * `query s x`(其中 $s$ 是一个字符串,$x$ 是一个自然数):表示向限制集 $R$ 中加入一个限制 $(s, x)$。 一个限制 $(s, x)$ 被满足当且仅当:单词集 $D$ 中至少有 $x$ 个字符串满足 $s$ 是它们的前缀。其中,字符串 $s$ 是 $t$ 的前缀当且仅当可以通过删除 $t$ 尾部的若干个(可以是 $0$ 个)字符得到 $s$。例如,`aaa` 是 `aaab` 的前缀,也是 `aaa` 的前缀。 小 C 想让你告诉他:在每次操作后,限制集 $R$ 中的所有限制是否**全部都被满足**。

输入格式

第一行包含一个正整数 $m$ —— 表示总的操作次数。 接下来 $m$ 行,每行描述一次操作,格式为 `add s` 或 `query s x`。

输出格式

输出共 $m$ 行。对于第 $i$ 次操作,如果操作完成后限制集中的所有限制全部都被满足,则在第 $i$ 行输出 `Yes`;否则输出 `No`。

说明/提示

#### ****样例解释**** 以第三次操作为例: 前三次操作完成后,$D = \{a, ab\}$,$R = \{(a, 2)\}$。 考虑 $(a, 2)$ 限制是否被满足:在集合 $D$ 中的字符串里,$a$ 是 $a$ 的前缀,$a$ 是 $ab$ 的前缀,因此恰好有 $2$ 个字符串满足条件。该限制被满足,所以输出 `Yes`。 #### ****其它样例说明**** * **样例 $2$**:见选手附加文件目录下的 `string/string2.in` 与 `string/string2.ans`。该样例满足测试点 $4 \sim 5$ 的约束条件。 * **样例 $3$**:见选手附加文件目录下的 `string/string3.in` 与 `string/string3.ans`。该样例满足测试点 $9 \sim 10$ 的约束条件。 #### ****数据范围**** 定义 $S$ 为所有操作中给定字符串的长度之和。对于所有测试数据,保证 $m \le 10^6$,$S \le 10^6$。 各测试点的附加限制如下表所示: | 测试点编号 | $m \le$ | $S \le$ | 特殊性质 | | :---: | :---: | :---: | :---: | | $1 \sim 2$ | $50$ | $50$ | 无 | | $3$ | $5000$ | $5000$ | 无 | | $4 \sim 5$ | $50$ | $50$ | $A$ | | $6$ | $10^6$ | $10^6$ | $A$ | | $7 \sim 8$ | $100$ | $500$ | $B$ | | $9 \sim 10$ | $10^6$ | $10^6$ | 无 | * **特殊性质 $A$**:所有 `query` 操作都在所有的 `add` 操作之后。 * **特殊性质 $B$**:最多只有一个 `query` 操作。