CF1851A Escalator Conversations
题目描述
有一天,Vlad 对在地铁扶梯上可以和谁聊天产生了好奇。共有 $n$ 位乘客。扶梯共有 $m$ 个台阶,所有台阶编号从 $1$ 到 $m$,第 $i$ 个台阶的高度为 $i \cdot k$。
Vlad 的身高为 $H$ 厘米。如果两个人的身高分别为 $a$ 和 $b$,当他们站在不同的台阶上,且他们的身高差等于台阶高度差时,他们就可以在扶梯上聊天。
例如,如果两个人的身高分别为 $170$ 和 $180$ 厘米,且 $m = 10, k = 5$,那么他们可以分别站在编号为 $7$ 和 $5$ 的台阶上,此时台阶高度差等于两人的身高差:$k \cdot 2 = 5 \cdot 2 = 10 = 180 - 170$。当然也有其他可能的站法。
给定一个大小为 $n$ 的数组 $h$,其中 $h_i$ 表示第 $i$ 个人的身高。Vlad 想知道他可以分别和多少人单独在扶梯上聊天。
例如,如果 $n = 5, m = 3, k = 3, H = 11$,且 $h = [5, 4, 14, 18, 2]$,Vlad 可以和身高为 $5$ 的人聊天(Vlad 站在第 $1$ 个台阶,另一个人站在第 $3$ 个台阶),也可以和身高为 $14$ 的人聊天(例如 Vlad 站在第 $3$ 个台阶,另一个人站在第 $2$ 个台阶)。Vlad 不能和身高为 $2$ 的人聊天,因为即使他们站在扶梯的两端,台阶高度差也只有 $6$,而他们的身高差为 $9$。Vlad 也不能和其余的人聊天,所以本例的答案是 $2$。
输入格式
第一行包含一个整数 $t$($1 \le t \le 1000$)——表示测试用例的数量。
接下来是每个测试用例的描述。
每个测试用例的第一行包含四个整数:$n, m, k, H$($1 \le n, m \le 50$,$1 \le k, H \le 10^6$)。其中 $n$ 表示人数,$m$ 表示台阶数,$k$ 表示相邻台阶的高度差,$H$ 表示 Vlad 的身高。
第二行包含 $n$ 个整数:$h_1, h_2, \ldots, h_n$($1 \le h_i \le 10^6$)。其中 $h_i$ 表示第 $i$ 个人的身高。
输出格式
对于每个测试用例,输出一个整数——Vlad 可以分别和多少人单独在扶梯上聊天。
说明/提示
第一个样例在题目描述中已给出解释。
在第二个样例中,Vlad 可以和身高为 $11$ 的人聊天。
在第三个样例中,Vlad 可以和身高为 $44, 74, 98, 62$ 的人聊天。因此答案为 $4$。
在第四个样例中,Vlad 可以和身高为 $73$ 的人聊天。
由 ChatGPT 4.1 翻译