这道题本质上是在长度为 n 的序列上进行分组。
每个人只能有两种情况:
给定 n 个人的权值序列 a1,a2,…,an,保证 a 已按非降序排列。
需要将所有人分成若干组,每组人数只能为 1 或 2。规则如下:
请你计算共有多少种合法的分组方案,答案对 109+7 取模。
每个测试文件均包含多组测试数据。第一行输入一个整数 T (1≤T≤105) 表示数据组数,每组测试数据描述如下:
第一行输入两个整数 n,K (1≤n≤2×105, 0≤K≤109)。
第二行输入 n 个整数 a1,a2,…,an (∣ai∣≤1018),并保证 a1≤a2≤⋯≤an。
保证所有测试中 n 的总和不超过 2×105。
输出 T 行,每行输出一个整数,表示合法分组方案数对 109+7 取模后的结果。
输入
3
4 1
1 2 4 10
4 0
1 2 3 4
5 2
1 1 2 4 7
输出
2
1
5
说明
第一组:只有相邻的 (1,2) 满足差值不超过 K,因此方案为:全单人;或 (1,2) 配对其余单人,共 2 种。
第二组:相邻差均大于 0,无法配对,只能全单人,答案为 1。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.