UVa 1149 (贪心) Bin Packing
2015-04-22 13:06
453 查看
首先对物品按重量从小到大排序排序。
因为每个背包最多装两个物品,所以直觉上是最轻的和最重的放一起最节省空间。
考虑最轻的物品i和最重的物品j,如果ij可以放在一个包里那就放在一起。
否则的话,j只能自己单独放在一个包里,因为最轻的都不行,其他物品就更不可能和j放在一起了。
如果j可以和多个物品放在一起,那么j和最轻的i放一起,剩下的一定能和除j外最重的放一起。
代码君
因为每个背包最多装两个物品,所以直觉上是最轻的和最重的放一起最节省空间。
考虑最轻的物品i和最重的物品j,如果ij可以放在一个包里那就放在一起。
否则的话,j只能自己单独放在一个包里,因为最轻的都不行,其他物品就更不可能和j放在一起了。
如果j可以和多个物品放在一起,那么j和最轻的i放一起,剩下的一定能和除j外最重的放一起。
#include <cstdio> #include <algorithm> using namespace std; const int maxn = 100000 + 10; int a[maxn]; int main() { //freopen("in.txt", "r", stdin); int T; scanf("%d", &T); for(int kase = 0; kase < T; kase++) { if(kase) puts(""); int n, l; scanf("%d%d", &n, &l); for(int i = 0; i < n; i++) scanf("%d", &a[i]); sort(a, a + n); int head = 0, rear = n - 1, cnt = 0; while(head <= rear) { cnt++; if(head == rear) head++; else if(a[head] + a[rear] <= l) { head++; rear--; } else rear--; } printf("%d\n", cnt); } return 0; }
代码君
相关文章推荐
- UVA 1149 - Bin Packing ( 贪心 + 二分 & STL )
- 【uva】1149-Bin Packing(贪心 + STL )
- UVA 1149 Bin Packing(贪心)
- UVA-1149 Bin Packing (贪心)
- UVA 1149 bin packing (贪心)
- UVa 1149 - Bin Packing [贪心]
- UVa 1149 - Bin Packing [贪心]
- UVA - 1149 Bin Packing 贪心水题
- UVa - 1149 Bin Packing( 经典背包 贪心 )
- UVa 1149 Bin Packing (二分 + 贪心)
- UVa 1149 Bin Packing 【贪心】
- uva 1149 Bin Packing(贪心)
- UVA 1149 Bin Packing 装箱(贪心)
- Uva1149 Bin Packing【贪心】
- UVA 1149 Bin Packing 装箱 经典贪心 (SWERC 2005)
- UVA 1149 Bin Packing 装箱(简单贪心)
- UVA 1149 Bin Packing
- UVA 1149(p253)----Bin Packing
- UVA - 1149 Bin Packing
- UVA 1149-Bin Packing