#P16903. [CCO 2026] Beyond Counting
[CCO 2026] Beyond Counting
题目描述
Andy Jiang 正在学习数据结构。一天,他的朋友 Austin Zhu 给了他一个关于树的问题。
Austin 提供了一棵有 个顶点的树,顶点编号为 到 。每个顶点 都有一个值 。
对于每一个查询,Austin 让 Andy 考虑一条连接两个顶点 与 的路径,并计算给定值 在这条路径上出现了多少次。
Andy 看了一眼题目,觉得这对他而言太简单了。
与其仅仅统计出现次数,Andy 决定给自己增加一些挑战:对于每个查询,他想知道 的频率与同一路径上其他值的频率相比如何。
形式化地,对于每个查询 :
- 考虑从 到 的简单路径。
- 令 表示值 在这条路径上的出现次数。
Andy 将 的 排名 定义为 $1 + |\{y \mid \operatorname{cnt}(y) > \operatorname{cnt}(x_i)\}|$。
也就是说, 加上路径上出现次数严格多于 的不同值的个数。注意, 可能根本不在路径上,即 。此时,你需要返回 加上路径上不同值的个数。
在某些测试数据中,查询会以如下所述的加密形式给出。
请你帮助 Andy 为每个查询求出 的排名。
输入格式
第一行包含三个正整数 、 和 (,)。
第二行包含 个整数 ()。
接下来 行,每行包含两个整数 (),表示第 条边。
再接下来 行,每行包含三个整数 (,),描述第 个查询。
令 。对每个查询 ,实际参数按下式定义:
$$\begin{aligned} s_i &= ((\hat{s}_i + \operatorname{last}_{i-1} \times T - 1) \bmod N) + 1,\\ t_i &= ((\hat{t}_i + \operatorname{last}_{i-1} \times T - 1) \bmod N) + 1,\\ x_i &= ((\hat{x}_i + \operatorname{last}_{i-1} \times T - 1) \bmod 10^9) + 1. \end{aligned}$$计算完第 个查询的答案后,令
$$\operatorname{last}_i = \text{第 } i \text{ 个查询的答案}。$$这里可能还需要说明,“mod” 对应于大多数编程语言中的 运算符,表示除法取余。例如,,。
输出格式
对于每个查询,在新的一行输出该查询的答案。
5 5 0
1 2 3 4 4
4 3
2 5
1 3
3 2
4 5 3
4 5 4
4 5 5
1 5 1
1 5 4
2
1
4
1
1
5 5 1
1 2 3 4 4
4 3
2 5
1 3
3 2
4 5 3
2 3 2
3 4 4
2 1 999999997
5 4 3
2
1
4
1
1
提示
以下表格展示了可获得的 分的分配情况:
| 分值 | 的范围 | 的范围 | 额外限制 |
|---|---|---|---|
| 分 | 无。 | ||
| 所有的 均相等。 | |||
| 分 | ^ | ^ | |
| 且 。 | |||
| 分 | ^ | ||
| 分 | 无。 | ||
| 分 | ^ |
翻译由 DeepSeek V4 Pro 完成