zoukankan      html  css  js  c++  java
  • UVA-1149 Bin Packing (贪心)

    题目大意:给定n个物品的重量,无限个容量为m的箱子,每个箱子最多装两个物品,要把所有的物品都装下,最少需要多少个箱子。

    题目分析:贪心策略:每次将最重和最轻的两个物品放到一个箱子里,如果装不下,则将最重的单独装到一个箱子里。

    代码如下:

    # include<iostream>
    # include<cstdio>
    # include<cstring>
    # include<algorithm>
    using namespace std;
    
    int a[100005];
    
    int solve(int n,int m)
    {
        int l=0,r=n-1,ans=0;
        while(l<=r){
            if(a[l]+a[r]<=m)
                ++l,--r;
            else
                --r;
            ++ans;
        }
        return ans;
    }
    
    int main()
    {
        int T,n,m;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&n,&m);
            for(int i=0;i<n;++i)
                scanf("%d",a+i);
            sort(a,a+n);
    
            printf("%d
    ",solve(n,m));
            if(T)
                printf("
    ");
        }
        return 0;
    }
    

      

  • 相关阅读:
    纯快排
    Quick Sort(快速排序)
    归并排序 ALDS1_5_B:Merge Sort
    单调栈(POJ2559)
    Sequence
    Codeforces Round #503
    度度熊学队列
    Always Online hdu 6350
    Hills And Valleys
    Problem G. Depth-First Search
  • 原文地址:https://www.cnblogs.com/20143605--pcx/p/4868294.html
Copyright © 2011-2022 走看看