CF1951G.Clacking Balls

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Rammstein - Ausländer

ඞ

有 mm 个篮子沿着一个圆圈顺时针排列,编号为 11 到 mm(第 mm 号篮子与第 11 号篮子相邻)。此外,有 nn 个球,第 ii 个球最初放在第 aia_i 号篮子中,且每个篮子最多只含有一个球。

Alice 可以进行如下操作,每次操作无论是否移动/扔掉球都恰好耗时一秒:

  • Alice 从 11 到 nn 中等概率随机选择一个整数 ii。
  • 如果第 ii 个球已经被扔掉,则什么也不做。
  • 否则,将第 ii 个球从当前所在的篮子移动到下一个篮子(顺时针方向)。如果目标篮子中已经有另一个球 jj,则将球 jj 扔掉。

她重复上述操作,直到只剩下一个球为止。请计算 Alice 结束该过程所需的期望时间(单位为秒)。

可以证明,答案可以表示为最简分数 pq\frac{p}{q},其中 pp 和 qq 互质。你需要输出 p⋅q−1 mod 109+7p \cdot q^{-1} \bmod 10^9 + 7。可以保证 109+7∤q10^9 + 7 \nmid q。

输入格式

每个测试点包含多组测试数据。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4)——表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nn 和 mm(1≤n≤3⋅105,n≤m≤1091 \le n \le 3 \cdot 10^5, n \le m \le 10^9)——球的数量和篮子的数量。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤m1 \le a_i \le m,aia_i 两两不同)——每个球的初始位置。

保证所有测试用例中 nn 的总和不超过 3⋅1053 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数:Alice 结束该过程所需的期望时间(单位为秒),对 109+710^9 + 7 取模。

输入输出样例

  • 输入#1

    5
    3 10
    5 1 4
    2 15
    15 1
    6 6
    1 2 3 4 5 6
    6 9
    6 5 4 3 2 1
    1 100
    69

    输出#1

    600000042
    14
    35
    333333409
    0

说明/提示

在第一个测试用例中,Alice 可能的操作如下(若球 ii 已被扔掉,则定义 ai=−1a_i = -1):

  • 初始时,a=[5,1,4]a = [5, 1, 4]。
  • Alice 以 13\frac{1}{3} 的概率选择 i=2i = 2,将球 22 移动到篮子 22。此时 a=[5,2,4]a = [5, 2, 4]。
  • Alice 以 13\frac{1}{3} 的概率选择 i=2i = 2,将球 22 移动到篮子 33。此时 a=[5,3,4]a = [5, 3, 4]。
  • Alice 以 13\frac{1}{3} 的概率选择 i=2i = 2,将球 22 移动到篮子 44。由于篮子 44 原本有球 33,球 33 被扔掉。此时 a=[5,4,−1]a = [5, 4, -1]。
  • Alice 以 13\frac{1}{3} 的概率选择 i=3i = 3。球 33 已被扔掉,什么也不做。此时 a=[5,4,−1]a = [5, 4, -1]。
  • Alice 以 13\frac{1}{3} 的概率选择 i=2i = 2,将球 22 移动到篮子 55,球 11 被扔掉。此时 a=[−1,5,−1]a = [-1, 5, -1],过程结束。

本测试用例的答案为 1895\frac{189}{5}。第二个测试用例的答案为 1414(注意这两个球最初相邻)。

第三个测试用例的答案为 3535。

第四个测试用例的答案为 2203\frac{220}{3}。

第五个测试用例中,初始时只有一个球,答案为 00。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页