CF2127F.Hamed and AghaBalaSar
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Hamid 为 a+b 问题写了 3014 行代码,并将其中 10 行给了 Hamed;然后 Hamed 想到了如下问题。
给定两个整数 n 和 m。
一个数组 a1,a2,…,an 被称为“snake 数组”,当且仅当满足以下所有条件:
- 数组 a 的所有元素都是 0 到 m 之间的整数;
- a1+a2+⋯+an=m;
- an=max([a1,a2,…,an])。
我们定义 f(a),其伪代码如下:
function f(array a):
pos := 1
res := 0
令数组 nxt 使得 nxt[x] 是最小的下标 y 满足 y > x 且 a[y] > a[x],不存在则未定义。
while pos < n:
if a[pos] < a[n]:
res += a[nxt[pos]] - a[pos]
pos := nxt[pos]
else:
pos += 1
return res
请计算所有 snake 数组 a1,a2,…,an 的 f(a) 之和,结果对 109+7 取模。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 n 和 m(2≤n≤2⋅105,0≤m≤2⋅105)—— snake 数组的长度和所有元素之和。
保证所有测试用例中 m 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个整数,表示所有 snake 数组 a1,a2,…,an 的 f(a) 之和,对 109+7 取模。
输入输出样例
输入#1
8 2 5 3 4 4 6 5 10 6 23 100 100 142857 33333 200000 0
输出#1
9 14 76 985 142112 771227753 865580631 0
说明/提示
在第一个测试用例中,有三个 snake 数组:
- f([0,5])=5;
- f([1,4])=3;
- f([2,3])=1。
因此,答案为 5+3+1=9。
在第二个测试用例中,有六个 snake 数组:
- f([0,0,4])=4;
- f([0,1,3])=3;
- f([1,0,3])=2;
- f([1,1,2])=1;
- f([0,2,2])=2;
- f([2,0,2])=2。
因此,答案为 4+3+2+1+2+2=14。
在第五个测试用例中,一个可能的 snake 数组为:
- f([3,1,4,1,5,9])=6。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?