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

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

[RMI 2025] 电缆维护 / Engineers

背景

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

题目描述

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

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

形式化地说,设未被覆盖的点集为 RR,你需要保证 ∀i,j∈R\forall i,j\in R,都有 ∣Ci−Cj∣≤D|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;
  • 两个长度为 N−1N-1 的 vector<int> PP 和 QQ,表示对所有 0≤i≤N−10 \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=5 且 D=3D=3。树的结构如图所示:

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

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

限制条件

  • 1≤N≤200 0001 \le N \le 200\,000。
  • 对所有 0≤i≤N−10 \le i \le N-1 ,有 1≤Ci≤1 000 000 0001 \le C_i \le 1\,000\,000\,000。
  • 1≤D≤1 000 000 0001 \le D \le 1\,000\,000\,000。
  • 0≤pi,qi<N0 \le p_i, q_i < N ,pi≠qip_i \ne q_i,且 (pi,qi)(p_i, q_i) 互不相同。

子任务

# 分值 约束
11 77 N≤20N \le 20 且对所有 0≤i≤N−10 \le i \le N-1 ,有 1≤Ci≤501 \le C_i \le 50。
22 66 N≤1000N \le 1000 且对所有 0≤i≤N−10 \le i \le N-1 ,有 1≤Ci≤10001 \le C_i \le 1000。
33 1111 N≤1000N \le 1000。
44 1616 对所有 0≤i<N−10 \le i < N-1 ,有 pi=0,qi=i+1p_i = 0, q_i = i+1。
55 2626 N≤50000N \le 50000。
66 3434 无额外约束。