博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【hoj】2160 bin packing 二分、贪心
阅读量:6240 次
发布时间:2019-06-22

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

这个题是在二分的题单上的,可是依据二分法写出来的会在oj上超时。依据题目以下给出的提示能够发现能通过贪心法每次都找最能满足的情况去填充每个包,这样就能保证使用的包的数量是最少的

二分法解法:

#include 
#include
#include
#include
#define MAX 100000using namespace std;int n,length;int l[MAX];bool cmp(int a,int b){ return a
< n;i++){ r = length - l[i]; max = i; for(int j = n-1;j > i;j--){ if((l[j] < r) &&!tag[j]){//尽量找到最能填满剩余空间的物 max = j; break; } } if(!tag[max]){ q++; tag[max] = 1; } } if(q < mid) return false; else return true;}int main(){ int high,low,mid,res; while(cin>>n){ cin>>length; for(int i = 0;i < n;i++){ cin>>l[i]; } sort(l,l+n,cmp); high = n; low = 0; res = 0; while(low <= high){ mid = (low+high)/2; if(judge(mid)){ res = mid; low = mid+1; } else high = mid-1; } cout<
<

 

贪心法解法:

#include 
#include
#include
#include
#include
using namespace std;int li[100003];int ca[100003];bool cmp(int a,int b){ return a>b;}int main(){#ifndef ONLINE_JUDGE freopen("in.txt","r",stdin);#endif int n; int l; while(scanf("%d",&n)!=EOF) { scanf("%d",&l); for(int i=0;i

 

转载地址:http://kkdia.baihongyu.com/

你可能感兴趣的文章
一些关于写Java代码的建议
查看>>
网络社交如何保护个人隐私?做好这4步
查看>>
SQL*Plus中的Echo
查看>>
SEO基础知识8大精华文章之第一篇(连载)
查看>>
面向sql编程
查看>>
对前面的自定义的toast制作拖拽效果,以及双击居中效果
查看>>
如何规划构建一套大型的Citrix桌面虚拟化架构 - 后记
查看>>
animationFromTop
查看>>
SEM如何做数据分析?
查看>>
语音转文字如何在线转换的?
查看>>
PXE批量实现自动化安装系统
查看>>
tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:)...
查看>>
为域用户创建漫游用户配置文件
查看>>
sql server 第二讲
查看>>
什么是壳 - 脱壳篇01
查看>>
数据库基础
查看>>
python里面 循环明细对比 相同人员明细,生成同一订单里面
查看>>
linux top 命令的一些解释
查看>>
前端之HTML内容
查看>>
关于Datagridview控件用法的一些总结
查看>>