#include <cstdio>

#include <queue>

#include <algorithm>

#include <string.h>
//#include <bits/stdc++.h> using namespace std; const int maxn=; int t; int a[maxn+]; int sum[maxn+]; int n,m; bool judge(int mid){
priority_queue<int,vector<int>,greater<int> > q;
int cnt=;
int s=(n-)%(mid-);
if(s){
s++;
int temp=sum[(n-)%(mid-)+];
q.push(temp);
cnt+=temp;
}
for(int i=s+;i<=n;i++){
q.push(a[i]);
}
while(q.size()!=){
int temp=;
for(int i=;i<=mid;i++){
if(!q.empty()){
temp+=q.top();
q.pop();
} else {
break;
}
}
q.push(temp);
cnt+=temp;
}
return cnt<=m;
} int solve(){
int lb=,ub=n;
while(ub-lb>){
int mid=(ub+lb)>>;
if(judge(mid)) ub=mid;
else lb=mid;
}
if(judge(lb)){
return lb;
} else return ub;
} int main()
{
scanf("%d",&t);
while(t--){
sum[]=;
scanf("%d%d",&n,&m);
if(n<=){
printf("1\n");
continue;
} for(int i=;i<=n;i++){
scanf("%d",&a[i]);
sum[i]=sum[i-]+a[i];
}
sort(a+,a++n);
for(int i=;i<=n;i++){
sum[i]=sum[i-]+a[i];
}
//printf("%d\n",judge(3));
int ans=solve();
printf("%d\n",ans);
}
return ;
}

hdu5884的更多相关文章

  1. hdu5884 Sort(二分+k叉哈夫曼树)

    题目链接:hdu5884 Sort 题意:n个有序序列的归并排序.每次可以选择不超过k个序列进行合并,合并代价为这些序列的长度和.总的合并代价不能超过T, 问k最小是多少. 题解:先二分k,然后在k给 ...

  2. hdu5884(多叉哈夫曼树)

    hdu5884 题意 给出 n 个数,每次选择不超过 k 个数合并(删掉这些数,加入这些数的和),花费为合并的这些数的和,要求最后只剩下一个数,问 k 最小取多少. 分析 二分 k,合并数的时候可以按 ...

  3. Sort HDU5884(二分+多叉哈夫曼树)

    HDU5884 Sort 题意:有n个序列要进行归并,每次归并的代价是两个序列的长度的和,要求最终的代价不能超过规定的T,求在此前提下一次能同时进行归并的序列的个数k. 思路:还是太单纯,看完题目一直 ...

  4. hdu5884 Sort

    //--------------------------------------------------------------- /*---贪心策略+二分+队列 -----将原数组排序,然后每次取k ...

  5. hdu5884 Sort(二分)

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  6. Sort(hdu5884)

    Sort Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

随机推荐

  1. jQuery移动光标改变图像

    脚本代码移动光标改变图像是一款让你通过移动光标显示和调整多个图像或其他方法来触发. 代码:http://www.huiyi8.com/sc/10628.html

  2. ios图片瀑布流代码

    ios瀑布流,实现简单的瀑布流视图布局,可以显示网络图片,下拉刷新,上拉加载更多. 下载:http://www.huiyi8.com/sc/9087.html

  3. js的内部类

    JavaScript中本身提供一些,可以直接使用的类,这种类就是内部类.主要有: Object/Array/Math/Boolean/String/RegExp/Date/Number共8个内部类. ...

  4. python学习笔记:第七天(函数)

    Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率. 与C一样,Python提供了许多内建函数,比如print().同 ...

  5. 红黑树的C语言实现

    rbtree.h #ifndef _RED_BLACK_TREE_H_ #define _RED_BLACK_TREE_H_ #define RED 0 // 红色节点 #define BLACK 1 ...

  6. 重学JAVA基础(四):线程的创建与执行

    1.继承Thread public class TestThread extends Thread{ public void run(){ System.out.println(Thread.curr ...

  7. C# Linq 取得两个列表的交集

    我们经常会用到linq 来查询 一个数组中和另一个数组中相同的项, 这个时候就会用到IEqualityComparer接口. public class StudyInfoModel {      pu ...

  8. ng2自定义管道

    一.管道的作用及本质 作用:数据处理 本质:公用的方法 二.定义管道组件 //summary.pipe.tsimport { Pipe, PipeTransform } from '@angular/ ...

  9. 使用unlist将日期型数据的列表转换为向量时,出现的异常

    在使用unlist函数,将日期型的列表,转换为向量时,不会得到期望的结果,如下: > dateLst <- list(Sys.Date()) > dateLst [[1]] [1] ...

  10. WPF学习系列之四(WPF事件5大类)

    WPF最重要的5类事件: 生命周期事件:这些事件将在元素被初始化,加载或卸载时发生. 鼠标事件 这些事件是鼠标动作的结果. 键盘事件 这些事件是键盘动作的结果. 手写笔事件 这些事件是作用类似铅笔的手 ...