JS-TESTF3 魔法书架

描述

童童有一个魔法书架,书架的层数无限多,但每一层最多只能放 k 本书,每层的有效高度由放在这层中最高的那本书决定。如果某一层不放书,则认为这层的有效高度为 0。如果将 n 本书放入书架,每层最多放 k 本,让有效的总高度尽可能的小,这个最小总高度是多少?
例如一共有 4 本书,每本书的高度分别是 4、5、2、3,书架每层最多放 3 本书,要让放书之后的总高度最小那就是高度 4、5、3 放一层,高度 2 再放一层,一共放了两层,总高度就是 5+2=7。
现在输入 n 本书,每层最多能放 k 本书,请编写程序帮童童算一算最小高度是多少?

输入描述

共两行。
第一行,2 个正整数 n 和 k,表示有 n本书,每层最多可以放 k本书,数与数之间以一个空格隔开。
第二行,n 个正整数,分别表示每本书的高度(每本书的高度不超过100),数与数之间以一个空格隔开。

输出描述

一行,一个整数,最小总高度。

样例输入 1 

6 5
3 4 2 6 5 1

样例输出 1 

7

提示

数据范围与提示

1≤n≤100000,1≤k≤100000

#include<bits/stdc++.h>
using namespace std;
int n,k,sum=0;
int a[100005];
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;++i){
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	reverse(a+1,a+n+1);
    for(int i=1;i<=n;++i){
        if(i%k==1) sum+=a[i];
    }
    cout<<sum;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值