D60 树的直径 树剖+树状数组+线段树「CEOI2019」动态直径
D60 树的直径 树剖+树状数组+线段树「CEOI2019」动态直径
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
[AdditionalFile3163.zip](file://AdditionalFile3163.zip?type=additional_file)
#3163. 「CEOI2019」动态直径
标签: 传统 | 时间限制: 6000 ms | 内存限制: 1024 MiB |
题目描述
译自 CEOI 2019 Day1 T2「Dynamic Diameter」
你有一个 个节点的树,每条边有边权,有 次更新,每次修改一条边的边权,并询问树的直径。
本题强制在线。
输入格式
第一行输入三个正整数 ,表示节点数,询问数,以及一条边权值的上限。
接下来 行,其中第 行三个整数 ,表示链接节点 的一条边权值为 。
接下来 行,每行两个整数 ,表示加密前的数据。
记 为上次询问的答案,第一次时为 。解密后的数据为 $d' = (d + \mathrm{last}) \bmod (n - 1) + 1, e' = (e + \mathrm{last}) \bmod w$。表示将第 条边的权值修改为 。
输出格式
输出 行,每行一个整数,表示修改后的直径。
样例 1
输入
4 3 2000
1 2 100
2 3 1000
2 4 1000
2 1030
1 1020
1 890
输出
2030
2080
2050
这组样例如下图所示:

最左端图片是这棵树的初始状态,接下来的每张图表示在更新之后的情况。更改后的边权用绿色标记,直径用红色标记。
第一个询问更改了第三条边的边权,即 的边权改为 。两点间最大距离为 ,即 到 的距离。
因为第一个询问的答案为 ,第二个询问为:
$$\begin{aligned} d_2'&=(1+2030)\bmod 3=0\\ e_2'&=(1020+2030)\bmod 2000=1050\\ \end{aligned}$$因此边 的边权改为 ,这使得从 到 的距离最大,距离为 。
第三个询问为:
$$\begin{aligned} d_3'&=(1+2080)\bmod 3=2\\ e_3'&=(890+2080)\bmod 2000=970\\ \end{aligned}$$因此边 的边权改为 ,这使得从 到 的距离最大,距离为 。
样例 2
输入
10 10 10000
1 9 1241
5 6 1630
10 5 1630
2 6 853
10 1 511
5 3 760
8 3 1076
4 10 1483
7 10 40
8 2051
5 6294
5 4168
7 1861
0 5244
6 5156
3 3001
8 5267
5 3102
8 3623
输出
6164
7812
8385
6737
6738
7205
6641
7062
6581
5155
数据范围与提示
对于 的数据,保证 $2\le n \le 10^5, 1\le q\le 10^5, 1\le w \le 2\times 10^{13}$。
| 子任务编号 | 特殊限制 | 分值 | ||
|---|---|---|---|---|
| 边的形式都为 | ||||
| 边的形式都为 或 | ||||
| 保证有一条直径经过 号节点 | ||||
入门提高测试:高次同余方程(模版测试)8.22
- 状态
- 已结束
- 规则
- XCPC
- 题目
- 1
- 开始于
- 2024-8-22 11:40
- 结束于
- 2024-8-22 12:10
- 持续时间
- 0.5 小时
- 主持人
- 参赛人数
- 0