链接:https://ac.nowcoder.com/acm/contest/1221/C
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

        Forsaken有nnn个学生,每个学生都有一个能力值aia_iai​,为了方便管理,Forsaken决定将nnn个学生分成kkk组。
        Forsaken认为如果一个小组有一个能力在该小组极其突出的学生,这个小组就比较容易管理。我们定义对于teamiteam_iteami​来说,这个小组的管理方便度f(i)=max(aj∈teami)−min(aj∈teami)f(i) = max(a_j \in team_i) - min(a_j \in team_i)f(i)=max(aj​∈teami​)−min(aj​∈teami​)。Forsaken现在想知道max(∑i=1kf(i))max(\sum_{i=1}^{k}f(i))max(∑i=1k​f(i))。

输入描述:

第一行两个整数分别为n,kn,kn,k。
第二行nnn个数分别代表a1,a2...ana_1,a_2...a_na1​,a2​...an​。

输出描述:

一个整数表示最大的管理方便度之和。
示例1

输入

复制

5 1
10 6 2 7 9

输出

复制

8

备注:

1≤n≤1e51 \leq n \leq 1e51≤n≤1e5
1≤k≤n1 \leq k \leq n1≤k≤n
1≤ai≤1e91 \leq a_i \leq 1e91≤ai​≤1e9
 
思路:贪心
对于每个组,要有一个最大值-最小值,不用管这个组里的其他数字。
当 (组数*2)k*2>n(数字的个数)时,就会出现一个数字一组的情况,2*k-n就是一个数为一组的组数。如果拿k-(2*k-n),那么剩下的k则表示一组里至少有一个最大值和一个最小值的情况。之后只需要统计k个最大值-最小值的和就是答案。
 
#include <iostream>
#include<bitset>
#include<algorithm>
#include<string>
#include<cmath>
using namespace std;
const int maxn= ;
const int maxnum =;
long long f[maxn];
long long dp[maxn];
int main()
{
int n,k;
long long ans=;
cin >> n >> k;
for(int i=;i<=n;i++)
cin >> f[i];
sort(f+,f++n);
int num=n;
if(*k>n)
{
k-=(*k-n);
}
while(k)
{
ans+=(f[num]-f[n+-num]);
k--;
num--;
}
cout << ans << endl;
return ;
}

Forsaken给学生分组的更多相关文章

  1. 牛客小白月赛18 Forsaken给学生分组

    牛客小白月赛18 Forsaken给学生分组 Forsaken给学生分组 链接:https://ac.nowcoder.com/acm/contest/1221/C来源:牛客网 ​ Forsaken有 ...

  2. 洛谷——P1109 学生分组

    P1109 学生分组 题目描述 有N组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界R和下界L(L<=R),每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以使 ...

  3. 洛谷 P1109 学生分组

    P1109 学生分组 题目描述 有N组学生,给出初始时每组中的学生个数,再给出每组学生人数的上界R和下界L(L<=R),每次你可以在某组中选出一个学生把他安排到另外一组中,问最少要多少次才可以使 ...

  4. acm未解之谜-洛谷P1109学生分组

    把每一组的学生个数调度到一个给定区间范围内: 看了一圈题解,大佬都对原因避而不答: #include <iostream> #include <algorithm> using ...

  5. mysql使用GROUP BY分组实现取前N条记录的方法

    MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道 ...

  6. 【HIVE高级笔试必备题型】(组内topN、相邻行的值比较问题)求语文大于数学_/_求文科大于理科成绩的学生

    Hive SQL练习之成绩分析 数据:[id, 学号,班级,科目,成绩] 1,1,1,yuwen,80 2,1,1,shuxue,85 3,2,1,yuwen,75 4,2,1,shuxue,70 5 ...

  7. Mysql常用函数,难点,注意

    一.数学函数 ABS(x)   返回x的绝对值 BIN(x)   返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x)   返回大于x的最小整数值 EXP(x)   返回值e( ...

  8. MySQL练习题参考答案

    MySQL练习题参考答案 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 思路: 获取所有有生物课程的人(学号,成绩) - 临时表 获取所有有物理课程的人(学号,成绩) - 临时表 根据[ ...

  9. Oracle数据库语言——结构化查询语言SQL

    一.数据定义语言DDL 1.创建表空间:CREAT TABLESPACE lyy DATAFILE 'C:/app/lyy.dbf' SIZE 10M;(创建一个10M的表空间,存放在C盘app文件夹 ...

随机推荐

  1. 信息提示框:MessageBox

    一 函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;   1.参数列表    hW ...

  2. Exchanger 原理

    Exchanger(交换者)是一个用于线程间协作的工具类.Exchanger用于进行线程间的数据交换.它提供一个同步点,在这个同步点两个线程可以交换彼此的数据.这两个线程通过exchange方法交换数 ...

  3. JavaWeb_(SSH论坛)_五、帖子模块

    基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块 传送门 回复帖子 分析回 ...

  4. 实现shape图层添加label

    void CmapwingisTest2View::OnToolsAdd32780() { TCHAR szFilters[]= _T("SHP Files (*.shp)|*.shp||& ...

  5. C++入门经典-例5.20-右值引用传递参数

    1:使用字面值(如1.3.15f.true),或者表达式等临时变量作为函数实参传递时,按左值引用传递参数会被编译器阻止.而进行值传递时,将产生一个和参数同等大小的副本.C++11提供了右值引用传递参数 ...

  6. lyf基础作业

    include <stdio.h> include <stdlib.h> int main (void) { FILE * fp; int a[10]; int max=0; ...

  7. Dubbo Admin 控制台

    下载项目源码 https://github.com/apache/incubator-dubbo-admin 解压后配置 zookeeper 地址,路径为 dubbo-admin-server/src ...

  8. 怎样用 Bash 编程:语法和工具

    让我们通过本系列文章来学习基本的 Bash 编程语法和工具,以及如何使用变量和控制运算符,这是三篇中的第一篇. Shell 是操作系统的命令解释器,其中 Bash 是我最喜欢的.每当用户或者系统管理员 ...

  9. Mimikatz 攻防杂谈

    前几天看到了老外一篇讲 mimikatz 防御的文章,感觉行文思路还不错,但是内容稍有不足,国内也有一篇翻译,但是只是照着错误翻译的,所以就萌生了把那篇优秀文章,翻译复现,并加入其它一些内容,本文只是 ...

  10. emqtt 系统主题

    $SYS-系统主题 EMQ 消息服务器周期性发布自身运行状态.MQTT 协议统计.客户端上下线状态到 $SYS/ 开头系统主题. $SYS 主题路径以 “$SYS/brokers/{node}/” 开 ...