#P14716. [RMI 2025] 电缆维护 / Engineers

    ID: 16518 远端评测题 3000ms 2048MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>2025交互题最近公共祖先 LCA树链剖分Ad-hocRMI(罗马尼亚)

[RMI 2025] 电缆维护 / Engineers

题目背景

由于官方未提供时限和空限,将 TL 设置为 std 的两倍,ML 设置为 2G。

题目描述

给定一棵 NN 个点的树,点编号 0N10\sim N-1。点 ii 有正整数点权 CiC_i

给定正整数 DD。构造若干条简单路径(点集可以有交),使得未被路径覆盖的点的点权差值不大于 DD

形式化地说,设未被覆盖的点集为 RR,你需要保证 i,jR\forall i,j\in R,都有 CiCjD|C_i-C_j|\le D

在满足上述条件的前提下最小化路径数量。只需要求出路径数量。

实现细节

这是一道(函数式)交互题。你不需要,也不应该定义 main 函数。

你需要实现函数

int solve(int N, int D, std::vector<int> C, std::vector<int> P, std::vector<int> Q)

该函数接收以下参数:

  • 点数 NN
  • 最大可接受差值 DD
  • 点权 CC
  • 两个长度为 N1N-1vector<int> PPQQ,表示对所有 0iN10 \le i \le N-1,存在树边 (Pi,Qi)(P_i,Q_i)

返回符合条件的路径的最少数量。

输入格式

见「实现细节」。

输出格式

见「实现细节」。

5 3
1 10 3 8 6
0 1
1 2
2 3
2 4
1
20 30 
13 36 11 35 4 9 42 9 1 4 11 3 15 31 46 41 31 17 11 12
19 5
19 0
19 13
19 9
19 4
19 10
5 1
19 18
0 7
5 8
19 12
5 17
13 16
5 14
13 3
19 6
5 15
5 2
4 11
3

提示

样例解释

在样例一中,有 N=5N=5D=3D=3。树的结构如图所示:

::::align{center} ::::

一种合法的方案为构造路径 [0,1,2,3][0,1,2,3]

限制条件

  • 1N2000001 \le N \le 200\,000
  • 对所有 0iN10 \le i \le N-1 ,有 1Ci10000000001 \le C_i \le 1\,000\,000\,000
  • 1D10000000001 \le D \le 1\,000\,000\,000
  • 0pi,qi<N0 \le p_i, q_i < Npiqip_i \ne q_i,且 (pi,qi)(p_i, q_i) 互不相同。

子任务

# 分值 约束
11 77 N20N \le 20 且对所有 0iN10 \le i \le N-1 ,有 1Ci501 \le C_i \le 50
22 66 N1000N \le 1000 且对所有 0iN10 \le i \le N-1 ,有 1Ci10001 \le C_i \le 1000
33 1111 N1000N \le 1000
44 1616 对所有 0i<N10 \le i < N-1 ,有 pi=0,qi=i+1p_i = 0, q_i = i+1
55 2626 N50000N \le 50000
66 3434 无额外约束。