链接: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. eclipse切换 package explorer

  2. javascript中继承方式及优缺点(一)

    分别介绍原型链继承.call/apply继承(借用构造函数继承).组合继承.原型式继承.寄生式继承.寄生组合式继承 1. 原型链继承 核心:将父类的实例作为子类的原型 function SuperTy ...

  3. Confluence 6 上传文件

    当你上传一个文件的时候,例如上传一个图片或者文档,上传的文件将会附加到当前页面上. 你可以选择在页面中将文件显示为一个链接,一个图片或者嵌入到页面中(使用宏). 上传一个文件到页面中你需要具有空间的权 ...

  4. 【杂题】[LibreOJ #6608] 无意识的石子堆【容斥原理】【FFT】

    Description Solution 943718401=225*2^22+1 显然每行必须有两个,我们不妨枚举有k列有2个石子,那么有2(n-k)列有1个石子. \[Ans=\sum\limit ...

  5. JavaWeb-SpringBoot_使用MySQL数据库实现用户管理_demo

    使用Gradle编译项目 传送门 项目已托管到Github上 传送门 SpringBoot使用MySQL实现 实现功能:普通用户注册.普通用户登录.管理员通过edit-user页面和show-all- ...

  6. springboot 使用redis

    安装redis教程:https://www.cnblogs.com/nongzihong/p/10190489.html 依赖: <!--配置redis--> <dependency ...

  7. java基本数据类型全面总结

    Java数据类型(type)可以分为两大类:基本类型(primitive types)和引用类型(reference types).下面是Java团长给大家整理的java基本数据类型相关知识,感兴趣的 ...

  8. 套接字之recvfrom系统调用

    recvfrom系统调用通过用户传入的接收空间构造msghdr,并且调用sock_recvmsg,该函数调用socket操作的recvmsg函数sock->ops->recvmsg,ipv ...

  9. LeetCode 18. 四数之和(4Sum)

    题目描述 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等? ...

  10. Qt编写大数据大屏UI电子看板系统

    前言 目前大屏大数据可视化UI这块非常火,趁热也用Qt来实现一个,Qt这个一站式超大型GUI超市,没有什么他做不了的,大屏电子看板当然也不在话下,有了QSS和QPainter这两个无敌的工具组合,借用 ...