酷代码 AI
菜单
服务商

班级有 � n个学生,每个学生都有一个能力值 � � a i ,为了方便管理,老师决定将 � n个学生分成 � k组。 老师认为如果一个小组有一个能力在该小组极其突出的学生,这个小组就比较容易管理。我们定义对于 � � � � � team i 来说,这个小组的管理方便度 � ( � ) = � � � ( � � ∈ � � � � � ) − � � � ( � � ∈ � � � � � ) f(i)=max(a j ∈team i )−min(a j ∈team i )。老师现在想知道 � � � ( ∑ � = 1 � � ( � ) ) max(∑ i=1 k f(i))。 输入 第一行两个整数分别为 � , � n,k。 第二行 � n个数分别代表 � 1 , � 2 . . . � � a 1 ,a 2 ...a n 。 输出 一个整数表示最大的管理方便度之和。 样例输入 复制 5 1 10 6 2 7 9 样例输出 复制 8 提示 1≤n≤1e5 1≤k≤n 1≤ai≤1e9

```python # 读取输入 n, k = map(int, input().split()) # 获取每个学生的能力值 abilities = list(map(int, input().split())) # 对能力值进行排序 abilities.sort() # 计算相邻能力值的差值 differences = [] for i in range(n - 1): differences.append(abilities[i + 1] - abilities[i]) # 对差值进行排序 differences.sort() # 所有能力值的最大和最小的差值 total_difference = abilities[-1] - abilities[0] # 计算需要减去的最小差值和 if k > 1: for i in range(k - 1): total_difference -= differences[-i - 1] print(total_difference) ``` [2025-12-13 11:17:22 | AI问答 | 176点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多