首页 > Forsaken给学生分组
头像 noite
发表于 2025-03-25 21:07:21
    这道题比较简单,主要是要考虑所有情况,之后进行判断就可以了。     题目要求是方便管理学生,能力强的和能力弱的一组就方便管理,因此需要找到学生能力的差的最大值,所以首先对数组进行排序(直接用sort很方便),排序后的数组的最 展开全文
头像 Yuanzhe_fan
发表于 2025-10-13 22:04:30
根据题面,我们的目标是最大化这个总和: 等同于: 那么问题就变成了: 从 个学生中,选出 个作为各组的最大值, 个作为各组的最小值,使得最大值们的总和与最小值们的总和之差最大。 如何让 最大? 很简单,我们从排好序的数组中,选择最大的 个数 作为这 个组的 。 如何让 最 展开全文
头像 threeway
发表于 2025-10-14 23:15:58
#include <bits/stdc++.h> using namespace std; int main() { int n,k; cin>>n>>k; vector<int> a(n); for(int i=0; 展开全文
头像 猫萌
发表于 2022-03-09 16:45:41
比较简单的一题,只要注意下有几种情况即可 第一种,每个组都能拥有两个或两个以上的学生 第二种,只有部分组有。 那么我们考虑到底有几个组能获得两个以上的,那不就是先分配一个给他们再分配两个。 那么假如有十个学生分配7组,我们就可以知道有3组是有两个的,但如果是10个学生分配三组,那么必然每组都两个朝上 展开全文
头像 神崎兰子
发表于 2025-10-13 11:06:37
Forsaken给学生分组 题解 题目描述 Forsaken有 个学生,每个学生有一个能力值 。为了方便管理,Forsaken决定将这 个学生分成 组。 对于第 组,其"管理便利性"定义为: 求所有组的管理便利性总和的最大值: 核心结论 答案: 将学生能力值排序后,选 展开全文
头像 _LSR_
发表于 2025-10-13 19:27:32
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n,k; cin >> n >&g 展开全文
头像 Ricarpy
发表于 2025-10-13 20:11:00
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int n, k; cin >> n >& 展开全文
头像 辰郭
发表于 2025-10-13 20:24:38
#include<stdio.h> #include<stdlib.h> #include<string.h> int compare(const void* p1, const void* p2) { long long a = *(long long* 展开全文
头像 quchen666
发表于 2025-10-13 20:25:28
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5+10; int n,k; ll a[N]; int main() { cin>>n>> 展开全文