zoukankan      html  css  js  c++  java
  • UVa-1149 Bin Packing

    n个件物品,有容量为m的背包,每包最多装两件物品,问最少用几个背包?

    一种做法是枚举一个,二分另一个。

    另一种做法如下。匹配一个最大的,用最小的就可以,这样肯定是最优的。

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <algorithm>
    #define maxn 100010
    using namespace std;
    
    int main()
    {
    
        int cases, a[maxn];
        cin >> cases;
        for (int ca = 1; ca <= cases; ca++)
        {
            int n, m;
            cin >> n >> m;
            for (int i = 1; i <= n; i++) cin >> a[i];
            sort(a+1, a+1+n);
            int ans = 0, x = 1, y = n;
            while (x <= y)
            {
                if (a[x]+a[y] <= m) x++;
                y--;
            }
            cout << n-y << endl;
            if (ca !=cases) cout << endl;
        }
    }
    
    
    


  • 相关阅读:
    KMP算法的理解和代码实现
    关于线程死锁
    PAT1018
    PAT1059
    PAT1009
    PAT1006
    PAT1005
    PAT1004
    PAT1002
    PAT
  • 原文地址:https://www.cnblogs.com/ruthank/p/8712057.html
Copyright © 2011-2022 走看看