zoukankan      html  css  js  c++  java
  • HDU 3177 Crixalis's Equipment (贪心,差值)

    题意:判断 n 件物品是否可以搬进洞里,每件物品有实际体积A和移动时的额外体积 B 。

    析:第一反应就是贪心,一想是不是按B从大到小,然后一想,不对,比如体积是20,第一个

    是A=11, B=19.第二个是A = 1,B = 18.很明显不对。

    我们取AB的差值,进行贪心,为什么呢?

    我反过来想一下,假设我们把两个物品搬到洞中,所需要的洞的最小体积。第一个,A = 2,B = 10.

    第二个,A = 5, B = 10.如果先放第一个,第放第二个,体积为12,如果反过来则是15,很明显是先放

    差值大的,这样为下一个放留下较大的空间。

    代码如下:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <cstring>
    #include <map>
    #include <cctype>
    
    using namespace std;
    const int maxn = 1000 + 5;
    struct node{
        int A, B;
        bool operator < (const node &p) const {
            return (B - A) > (p.B - p.A);
        }
    };
    node a[maxn];
    
    int main(){
    //    freopen("in.txt", "r", stdin);
        int T, n, v; cin >> T;
        while(T--){
            scanf("%d %d", &v, &n);
            for(int i = 0; i < n; ++i)
                scanf("%d %d", &a[i].A, &a[i].B);
            sort(a, a+n);
    
            bool ok = true;
            for(int i = 0; i < n; ++i){
                if(v < a[i].B){ ok = false;  break; }
                v -= a[i].A;
            }
            
            if(ok)   puts("Yes");
            else puts("No");
        }
        return 0;
    }
    
  • 相关阅读:
    word编号变黑块
    恢复未保存的word
    协方差分析
    SAS字体变大
    可变区组长度--区组随机
    adv and disadv of oncology clinical trial endpoints
    非劣效试验界值确定
    Computer Science
    Compuer Science
    随笔
  • 原文地址:https://www.cnblogs.com/dwtfukgv/p/5556084.html
Copyright © 2011-2022 走看看