#df1926. 立方体积木(Cube Stacking)

立方体积木(Cube Stacking)

立方体积木(Cube Stacking)

题目描述

约翰和贝茜在玩一个方块游戏。编号为 1n1 \dots nnn1n300001 \le n \le 30000)个方块正放在地上,每个构成一个立方柱。

游戏开始后,约翰会给贝茜发出 PP1P1000001 \le P \le 100000)个指令。指令有两种:

移动(M):将包含 X 的立方柱移动到包含 Y 的立方柱上。

统计(C):统计含 X 的立方柱中,在 X 下方的方块数目。

写个程序帮贝茜完成游戏。

输入格式

第 1 行输入 PP,之后 PP 行每行输入一条指令,形式为 M X Y 或者 C X

输入保证不会有将立方柱放在自己头上的指令。

输出格式

输出共 PP 行,对于每个统计指令,输出其结果。

样例输入 #1

6
M 1 6
C 1
M 2 4
M 2 6
C 3
C 4

样例输出 #1

1
0
2

数据范围

  • 1n300001 \le n \le 30000
  • 1P1000001 \le P \le 100000
  • 输入保证不会有将立方柱放在自己头上的指令

知识点与难度

本题涉及的知识点从属于 数据结构(带权并查集),难度等级:提高


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例
1 20 3~8 小规模 P≤20 / 特殊: 只有 C 指令 / 特殊: 长链堆叠
2 15 9~11 Hack: 全 M 后单次 C / Hack: 重复同柱合并 / Hack: 长链最坏路径
3 30 12~20 中规模 P≈1e3~1e4 / 大规模 P≈1e5 压力
4 25 21~25 随机 P=1~1e5 回归