CF626F Group Projects

题目描述

班级中有 $n$ 个学生正在进行小组项目。学生们将分成若干组(有些学生可以单独成组),分别完成各自的独立部分,然后一起讨论结果。第 $i$ 个学生完成他/她的独立部分需要 $a_i$ 分钟。 如果学生之间的工作速度不同,较快的学生会感到沮丧,较慢的学生会感到有压力。特别地,某一个小组的不平衡度定义为该组内最大 $a_i$ 减去最小 $a_i$。注意,若某一组只有一个学生,其不平衡度为 $0$。问有多少种不同的分组方式,使得所有小组的不平衡度总和不超过 $k$? 如果存在一对学生,在一种分组中属于同一组,在另一种分组中属于不同组,则这两种分组被认为是不同的。

输入格式

第一行包含两个用空格分隔的整数 $n$ 和 $k$($1 \leq n \leq 200$,$0 \leq k \leq 1000$),分别表示学生人数和允许的最大总不平衡度。 第二行包含 $n$ 个用空格分隔的整数 $a_i$($1 \leq a_i \leq 500$),表示第 $i$ 个学生完成其独立部分所需的时间。

输出格式

输出一个整数,表示学生可分组的方案数。由于答案可能很大,请输出答案对 $10^9+7$ 取模后的结果。

说明/提示

在第一个样例中,有三种方案: - 第一、第二个学生分为一组,第三个学生单独成组。总不平衡度为 $2+0=2$。 - 第一个学生单独成组,第二、第三个学生分为一组。总不平衡度为 $0+1=1$。 - 所有三个学生都单独成组。总不平衡度为 $0$。 在第三个样例中,总不平衡度必须为 $0$,因此每个学生必须单独成组。 由 ChatGPT 5 翻译