学习小组

题目描述:

在算法学院里,有一项名为学习小组的传统。班级里共有 $n$ 名同学,他们的座位排成一排,编号依次为 $1$ 到 $n$。经过开学初的基础能力测试,每位同学都获得了一个独一无二的编程能力值。我们用一个长度为 $n$ 的排列 $p_1, p_2, \dots, p_n$ 来表示这 $n$ 名同学的能力值,即每位同学的能力值都在 $1$ 到 $n$ 之间且互不相同。

校长小C希望班级里能成立更多的“四人学习小组”。为了方便管理,一个学习小组必须由 $4$ 名同学组成,且他们的座位号必须严格递增。假设选出的四名同学座位号为 $a, b, c, d$,则必须满足 $a < b < c < d$。

在学习小组中,从左到右的四名同学分别担任以下角色:

  • 座位号 $a$:逻辑先锋
  • 座位号 $b$:代码达人
  • 座位号 $c$:纠错助手
  • 座位号 $d$:测试总监

校长小C经过多年教学发现,一个完美的学习小组必须同时满足以下两个神奇要求:

沟通要求:逻辑先锋($a$)与纠错助手($c$)需要高频讨论算法逻辑,两人的思维跨度不能太大。因此,他们的能力值差距不能超过常数 $K$,即满足 $\vert{}p_a - p_c\vert{} \le K$。

辅导要求:代码达人($b$)与测试总监($d$)之间需要形成老带新的互补关系。因此,他们的能力值必须有足够大的落差,差距至少为常数 $M$,即满足 $\vert{}p_b - p_d\vert{} \ge M$。

现在,小晨校长正在为即将到来的 S-PSC 和 PION 竞赛选拔人才。他拿到了 $T$ 个班级的测试数据,你能帮他编写一个程序,快速计算出每个班级中,到底能挑选出多少组不同的完美 $(a, b, c, d)$ 组合吗?

输入格式:

第一行包含一个正整数 $T$,表示班级(测试数据)的数量。

对于每个班级的测试数据:

第一行包含三个整数 $n, K, M$,分别表示班级的总人数,以及沟通要求与辅导要求中要求的常数 $K$ 和 $M$。

第二行包含 $n$ 个整数 $p_1, p_2, \dots, p_n$,表示按照座位号顺序排列的每位同学的编程能力值。保证该序列是一个 $1$ 到 $n$ 的排列。

输出格式:

输出共 $T$ 行。

每行输出一个整数,表示该班级中满足所有条件的完美学习小组 $(a, b, c, d)$ 的方案总数。

数据范围:

对于 $100\%$ 的数据,满足 $1 \le T \le 5$,$4 \le n \le 10000$,$0 \le K, M \le n$,$1 \le p_i \le n$,保证 $\sum n \le 30000$。

各测试点的数据范围梯度及特殊性质如下表所示:

测试点编号 n≤ 特殊性质 分值占比
1∼6 80 无 20%
7∼15 400 无 30%
16∼21 5000 无 20%
22∼30 10000 无 30%

样例输入:

(双击复制)
样例1:
2
5 2 3
3 5 2 1 4
4 1 1
1 2 3 4

样例2:
1
7 4 2
2 6 3 1 7 4 5

样例3:
1
10 5 3
1 10 3 4 2 7 8 9 6 5

样例输出:

(双击复制)
样例1:
1
0

样例2:
19

样例3:
84

提示:

样例解释 #1
 
对于第一组数据:$n = 5, K = 2, M = 3$,同学能力排列为 $p = [3, 5, 2, 1, 4]$。
 
我们枚举所有满足 $a < b < c < d$ 的组合:
 
1. 组合 $(1, 2, 3, 4)$:$p_1=3, p_3=2$,$\vert{}3-2\vert{}=1 \le 2$(满足沟通要求);$p_2=5, p_4=1$,$\vert{}5-1\vert{}=4 \ge 3$(满足辅导要求)。该组合完全合法。
 
2. 组合 $(1, 2, 3, 5)$:$p_1=3, p_3=2$(合法);但 $p_2=5, p_5=4$,$\vert{}5-4\vert{}=1 < 3$(不满足辅导要求)。
 
3. 组合 $(1, 2, 4, 5)$:$p_1=3, p_4=1$,$\vert{}3-1\vert{}=2 \le 2$(合法);但 $p_2=5, p_5=4$,$\vert{}5-4\vert{}=1 < 3$(不满足)。
 
4. 组合 $(1, 3, 4, 5)$:$p_1=3, p_4=1$(合法);但 $p_3=2, p_5=4$,$\vert{}2-4\vert{}=2 < 3$(不满足)。
 
5. 组合 $(2, 3, 4, 5)$:$p_2=5, p_4=1$,$\vert{}5-1\vert{}=4 > 2$(不满足沟通要求)。
 
综上,第一组数据中仅有 $1$ 种合法方案。
 
对于第二组数据:$n = 4, K = 1, M = 1$,同学能力排列为 $p = [1, 2, 3, 4]$。
 
仅有唯一的组合 $(1, 2, 3, 4)$。
 
计算沟通要求:$\vert{}p_1 - p_3\vert{} = \vert{}1 - 3\vert{} = 2 > 1$,不满足。
 
因此没有任何合法方案,输出 $0$。
---------------------------------------------------------------------------------------------------------

样例解释 #2

所有的组合:

$(1, 2, 3, 4)$ $(1, 2, 3, 6)$ $(1, 2, 4, 6)$ $(1, 3, 4, 5)$ $(1, 3, 4, 7)$ $(1, 3, 6, 7)$ $(1, 4, 6, 7)$ $(1, 5, 6, 7)$ $(2, 3, 5, 7)$ $(2, 3, 6, 7)$ $(2, 4, 5, 6)$ $(2, 4, 5, 7)$ $(2, 4, 6, 7)$ $(2, 5, 6, 7)$ $(3, 4, 5, 6)$ $(3, 4, 5, 7)$ $(3, 4, 6, 7)$ $(3, 5, 6, 7)$ $(4, 5, 6, 7)$

 

时间限制: 1000ms
空间限制: 256MB

来源: 温州市计算机学会