UVA 1149-Bin Packing
题目大意:给出物体个数和套子大小,一个套最多放俩个物体,求最少要多少套子
解题思路:排序后,最大与最小相加,看是否小于套子大小
#include <stdio.h>
#include <iostream>
using namespace std;
int cmd(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
int n;
int m, l;
int a[1000000];
cin >> n;
while(n--) {
cin >> m;
cin >> l;
for(int i = 0; i < m; i++) {
cin >> a[i];
}
int count = 0;
qsort(a, m, sizeof(int),cmd);
int j = 0;
int i;
for(i = m - 1; i >j; i--) {
if(a[i] + a[j] <= l)
j++;
count++;
}
if(i == j)
count++;
cout << count << endl;
if(n != 0)
printf("\n");
}
return 0;
}