博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 1149 - Bin Packing
阅读量:4596 次
发布时间:2019-06-09

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

链接:

 

题意:

给定N(N≤1e5)个物品的重量Li,背包的容量M,同时要求每个背包最多装两个物品。

求至少要多少个背包才能装下所有的物品。

 

分析:

排序,然后贪心选择即可。如果能和物品A一起装入背包的另一个物品B有多个,则应该选择最重的一个物品B。

证明:
若不是选择物品B,而是选择物品C(C的重量小于B),则总的背包数不仅没有减少,反而可能增加。

 

代码:

1 #include 
2 #include
3 using namespace std; 4 5 int a[100000+5]; 6 7 int main(){ 8 int T, n, b; 9 scanf("%d", &T);10 while(T--){11 scanf("%d%d", &n, &b);12 for(int i = 0; i < n; i++) scanf("%d", &a[i]);13 sort(a, a + n);14 15 int remain = n;16 for(int L = 0, R = n - 1; L < R; R--){17 if(a[L] + a[R] <= b) L++, remain -= 2;18 }19 printf("%d\n", (n + remain) / 2);20 if(T) printf("\n");21 }22 return 0;23 }

 

转载于:https://www.cnblogs.com/hkxy125/p/8321959.html

你可能感兴趣的文章
你必知必会的SQL面试题
查看>>
html5 Canvas绘制时钟以及绘制运动的圆
查看>>
Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween
查看>>
JavaScript空判断
查看>>
洛谷 P1439 【模板】最长公共子序列(DP,LIS?)
查看>>
python timeit
查看>>
Wireless Network 并查集
查看>>
51nod 1019 逆序数
查看>>
rtmpdump代码分析 转
查看>>
20145202马超《JAVA》预备作业1
查看>>
[导入]参考OpenSceneGraph的3ds插件学习lib3ds
查看>>
java基础-四大特征
查看>>
linux文档查看器
查看>>
如何使用 ccs7.2调试代码
查看>>
2016.8.22 Axure两级下拉框联动的实现
查看>>
C#集合类:动态数组、队列、栈、哈希表、字典(转)
查看>>
基于bootstrap 的datatable插件的使用(php版)
查看>>
展示图片的自动和手动切换
查看>>
机器学习分类
查看>>
kvm虚拟化关闭虚拟网卡virbr0的方法
查看>>