QOJ.ac

QOJ

时间限制: 3.0 s 内存限制: 256 MB 总分: 100 可 Hack ✓

#8885. Rat-O-Matic

统计

Rapid City Dynamics 公司以其狗型机器人、猎豹型机器人甚至人形机器人而闻名。但大项目需要大投入,因此他们决定制造一些更简单但更受欢迎(且易于销售!)的产品。现在,该公司正在研发一种名为 Rat-O-Matic 的新机器人,而作为 Rapid City Dynamics 的员工,你将参与其中!

机器人本身是一只机械鼠,它可以在平面上移动,并通过触碰放置在平面上的特殊框架来产生旋律。你可以假设平面在所有方向上都是无限的,并且上面有一个笛卡尔坐标系。平面上恰好有 $n$ 个框架。每个框架由三个整数 $x, y$ 和 $r$ 描述。它由以点 $(x, y)$ 为中心的两个轴对齐的正方形所围成的区域组成:第一个正方形的半径为 $r$,第二个正方形的半径为 $2r$。正方形的半径是指从其中心到其边的距离。此外,每个框架都有一个关联的声音。目前只有三种可能的声音,我们将其记为 “r”、“a” 和 “t”。保证没有任何两个框架相交或接触。

可以通过在特殊键盘上输入框架编号(框架从 1 开始编号)来与机器人交互。最初,机器鼠位于所有框架之外。收到指令后,机器鼠开始向指定的框架移动。得益于其专利导航系统,机器人会选择一条穿过其他框架数量最少的路径。当触碰到一个框架时,它会产生一个关联的声音,因此机器鼠在移动过程中会生成一段旋律。机器人在触碰到指定框架后停止。

众所周知,人们喜欢熟悉的旋律。你的数据库中有 $m$ 段旋律。每段旋律由一串编码声音的字符描述。当且仅当机器鼠生成的旋律是数据库中某段旋律的子串(连续子序列)时,我们称生成的旋律包含在数据库的旋律中。生成旋律的流行度是指数据库中包含该生成旋律的旋律数量。注意,即使数据库中某些旋律相同,它们也必须分别计算。

为了创造最有趣的框架布局,你进行了 $q$ 次实验。每次实验属于以下类型之一:

  1. 停用编号为 $x$ 的框架。保证该框架当前处于活动状态。停用的框架不会产生任何声音。最初,所有框架都是活动的。
  2. 激活编号为 $x$ 的框架。保证该框架当前处于停用状态。
  3. 计算机器鼠从所有框架之外向编号为 $x$ 的框架移动时所生成的旋律的流行度。保证该框架此时处于活动状态。

请使用你的计算机模拟所有实验!

输入格式

第一行包含一个整数 $n$,表示框架的数量 ($1 \le n \le 2 \cdot 10^5$)。接下来的 $n$ 行描述框架,第 $i$ 行包含以空格分隔的整数 $x_i, y_i, r_i$ 和一个字符 $c_i$ ($-10^8 \le x_i, y_i \le 10^8$, $1 \le r_i \le 10^8$, 且 $c_i$ 为 “r”、“a” 或 “t”)。这些分别是框架中心的坐标、内正方形的半径以及关联的声音。

下一行包含一个整数 $m$,表示数据库中旋律的数量 ($1 \le m \le 2 \cdot 10^5$)。接下来的 $m$ 行包含表示旋律的字符串。每个字符串非空,且由字符 “r”、“a” 和 “t” 组成。所有字符串的总长度不超过 $2 \cdot 10^5$。

下一行包含一个整数 $q$,表示实验的数量 ($1 \le q \le 2 \cdot 10^5$)。接下来的 $q$ 行描述实验,第 $j$ 行包含一个字符 $t_j$ (“-”、“+” 或 “?”) 和一个整数 $x_j$,中间以空格分隔。字符编码了实验类型(“-” 为 1,“+” 为 2,“?” 为 3),整数是框架的编号。

保证至少存在一个第三类型的实验。

输出格式

对于每个第三类型的实验,输出一行,包含一个整数,即生成旋律的流行度。

样例

输入 1

3
3 3 4 r
2 4 1 a
14 4 1 t
3
rat
rara
aaa
6
? 3
? 2
- 1
? 2
+ 1
? 2

输出 1

1
2
3
2

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.