博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
贪心(哈夫曼树):HDU 5884 sort
阅读量:5010 次
发布时间:2019-06-12

本文共 1223 字,大约阅读时间需要 4 分钟。

  这道题目,我做的时候不会哈夫曼树,自己贪心是错的都不知晓。还可以发现这里不必用优先队列,可以用两个队列,毕竟插入的数是有单调性的。

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 const int N=300010; 7 int a[N],n,S,f1,f2,b1,b2; 8 int q1[N],q2[N]; 9 bool Check(int k){10 f1=b1=f2=b2=0;11 for(int i=1;i<=n;i++)12 q1[b1++]=a[i];13 for(int i=0;(n+i-1)%(k-1);i++)14 q2[b2++]=0;15 int tot=0,tmp;16 while(true){tmp=0;17 for(int i=1;i<=k;i++){18 if(f1==b1)tmp+=q2[f2++];19 else if(f2==b2)tmp+=q1[f1++];20 else if(q1[f1]
=b1&&f2>=b2)break;24 q2[b2++]=tmp;25 } 26 return tot<=S;27 }28 int main(){29 int T;30 scanf("%d",&T);31 while(T--){32 scanf("%d%d",&n,&S);33 for(int i=1;i<=n;i++){34 scanf("%d",&a[i]);35 } 36 sort(a+1,a+n+1);37 int lo=2,hi=n;38 while(lo<=hi){39 int mid=(lo+hi)>>1;40 if(Check(mid))hi=mid-1;41 else lo=mid+1;42 }43 printf("%d\n",lo);44 }45 return 0;46 }

 

转载于:https://www.cnblogs.com/TenderRun/p/5883099.html

你可能感兴趣的文章
记忆--1.致我们不可缺少的记忆
查看>>
lintcode28- Search a 2D Matrix- easy
查看>>
react项目
查看>>
C# 万年历 农历 节气 节日 星座 星宿 属相 生肖 闰年月 时辰(转)
查看>>
A Simple Tree Problem
查看>>
Modular Inverse [ZOJ 3609]
查看>>
mybatis 返回值类型是Map
查看>>
构造函数
查看>>
OkHttp 3.4入门
查看>>
生成Makefile文件全过程
查看>>
[nghttp2]压测工具,源码编译并进行deb打包过程
查看>>
MySQL性能测试工具之mysqlslap使用详解
查看>>
深入理解jsonp跨域请求原理
查看>>
regsvr32注册COM组件失败
查看>>
Vue.js笔记(一)
查看>>
oracle_PLSQL 快捷键使用技巧
查看>>
【前端】【javascript】es6中的遍历器接口Iterator
查看>>
初探c++11之常数表达式
查看>>
jmeter,CSV数据加载、数据库连接、正则
查看>>
(独孤九剑)--正则表达式
查看>>