#2443. [CSP-S 2026] 迁徙 / migrate

[CSP-S 2026] 迁徙 / migrate

C 迁徙(migrate)

题目描述

海上有 nn 座岛屿,自北向南排成一条直线,其中第 ii(1≤i≤n1\le i\le n)座岛屿在这条直线上的坐标为整数 xix_i,且 x1<x2<⋯<xnx_1<x_2<\cdots<x_n。每年秋季,一群海鸟会沿着这条直线在南北方向上迁徙,小 P 正在观察它们。

海鸟的体力有限,每次飞行的距离都不超过 dd。若两座岛屿 i,ji,j(1≤i,j≤n1\le i,j\le n)满足 ∣xi−xj∣≤d|x_i-x_j|\le d,海鸟就可以从第 ii 座岛屿直接飞到第 jj 座岛屿。

对于两座不同的岛屿 u,vu,v(1≤u,v≤n1\le u,v\le n),一条从第 uu 座岛屿到第 vv 座岛屿的路径形如 y1→y2→⋯→ymy_1\to y_2\to\cdots\to y_m,其中 y1=uy_1=u,ym=vy_m=v,且对于所有 ll(1≤l≤m−11\le l\le m-1),海鸟都能够从第 yly_l 座岛屿直接飞到第 yl+1y_{l+1} 座岛屿;其长度为 m−1m-1,即海鸟在路径中飞行的次数。

小 P 发现,海鸟在迁徙时总是会选择长度最短的路径。对于两座岛屿 u,vu,v(1≤u<v≤n1\le u<v\le n),若从第 uu 座岛屿到第 vv 座岛屿的长度最短的路径恰好有两条,海鸟可以分成两群,分别沿其中一条飞往第 vv 座岛屿;此时称 (u,v)(u,v) 为双径岛屿对。两条路径不同,当且仅当它们经过的岛屿序列不完全相同。

你需要帮助小 P 求出双径岛屿对的数量。

输入格式

本题包含多组测试数据。

输入的第一行包含两个非负整数 c,tc,t,分别表示测试点编号与测试数据组数。特别地,若 c=0c=0,则该测试点为样例。

接下来依次输入 tt 组测试数据。对于每组测试数据:

  • 第一行包含两个正整数 n,dn,d,分别表示岛屿数量和海鸟一次最多能飞行的距离。
  • 第二行包含 nn 个严格递增的整数 x1,x2,…,xnx_1,x_2,\ldots,x_n,依次表示每座岛屿的坐标。

输出格式

对于每组测试数据,输出一行一个非负整数,表示双径岛屿对的数量。

样例

输入样例 1

0 2
4 2
1 2 3 4
5 2
1 2 3 4 5

输出样例 1

1
2

输入样例 2

0 2
5 3
-2 -1 0 1 2
6 2
-4 -3 -2 -1 3 6

输出样例 2

0
1

样例解释

样例 1 第一组只有 1 个双径岛屿对 (1,4)(1,4):1→2→41\to2\to4 与 1→3→41\to3\to4。第二组有 (1,4)(1,4)、(2,5)(2,5);(1,5)(1,5) 的最短路唯一(1→3→51\to3\to5),不算。

样例 2 第一组从第 1 座到第 5 座岛有三条最短路(1→2→51\to2\to5、1→3→51\to3\to5、1→4→51\to4\to5),所以为 0。第二组只有 (1,4)(1,4),第 5、6 座岛与其他岛都不连通。

数据范围

设 NN 为单个测试点内所有测试数据的 nn 之和。对于所有测试数据,均有:

  • 0≤c≤250\le c\le 25,2≤t≤1052\le t\le 10^5;
  • 1≤n≤2×1061\le n\le 2\times 10^6,N≤2×106N\le 2\times 10^6,1≤d≤2×10181\le d\le 2\times 10^{18};
  • −1018≤x1<x2<⋯<xn≤1018-10^{18}\le x_1<x_2<\cdots<x_n\le 10^{18}。
测试点编号 N≤N\le 特殊性质
1,21,2 99 无
3∼63\sim 6 300300
7∼107\sim 10 50005000
11,1211,12 2×1062\times 10^6 A
13,1413,14 B
15∼1815\sim 18 10610^6 C
19∼2119\sim 21 2×1052\times 10^5 无
22∼2522\sim 25 2×1062\times 10^6

特殊性质 A:x1,x2,…,xnx_1,x_2,\ldots,x_n 构成等差数列。

特殊性质 B:存在一座岛屿,使得海鸟可以从该岛屿直接飞到任意其他岛屿。

特殊性质 C:xn−x1≤10dx_n-x_1\le 10d。


题目来源:CSP-S 2026 第二轮(CCF CSP-S 提高级)。 题面据洛谷 P17833 整理(文件输入输出改为标准输入输出);本平台测试数据覆盖题面「测试点编号」表里的各档数据范围。