UVa #1149 Bin Packing (习题8-1)

来源:互联网 发布:程序员穿正装 编辑:程序博客网 时间:2024/05/23 16:14

贪心法,同白书例题中的二人乘船问题


#define UVa  "8-1.1149.cpp"char fileIn[30] = UVa, fileOut[30] = UVa;#include<cstring>#include<cstdio>#include<algorithm>using namespace std;//Global Variables. Reset upon Each Case!const int maxn = 100000 + 10;int T, n, l, sticks[maxn];/////int main() {    scanf("%d", &T);    for(int kase = 0; kase < T; kase ++) {        if(kase) printf("\n");        scanf("%d%d", &n, &l);        for(int i = 0; i < n; i ++) scanf("%d", &sticks[i]);        sort(sticks, sticks + n);        int p1 = 0, p2 = n-1, ans = 0;        while(p1 <= p2) {            if(p1 == p2) {                ans ++;                break;            }            else {                int s1 = sticks[p1], s2 = sticks[p2];                if(s1 + s2 <= l) {                    ans ++;                    p1 ++;                    p2 --;                }                else {                    ans ++;                    p2 --;                }            }        }        printf("%d\n", ans);    }    return 0;}

0 0