HDU 3177 Crixalis's Equipment(贪婪)「建议收藏」

HDU 3177 Crixalis's Equipment(贪婪)

大家好,又见面了,我是全栈君。

主题链接:http://acm.hdu.edu.cn/showproblem.php?

pid=3177

Problem Description
HDU 3177 Crixalis's Equipment(贪婪)「建议收藏」Crixalis – Sand King used to be a giant scorpion(蝎子) in the deserts of Kalimdor. Though he’s a guardian of Lich King now, he keeps the living habit of a scorpion like living underground and digging holes.

Someday Crixalis decides to move to another nice place and build a new house for himself (Actually it’s just a new hole). As he collected a lot of equipment, he needs to dig a hole beside his new house to store them. This hole has a volume of V units, and Crixalis has N equipment, each of them needs Ai units of space. When dragging his equipment into the hole, Crixalis finds that he needs more space to ensure everything is placed well. Actually, the ith equipment needs Bi units of space during the moving. More precisely Crixalis can not move equipment into the hole unless there are Bi units of space left. After it moved in, the volume of the hole will decrease by Ai. Crixalis wonders if he can move all his equipment into the new hole and he turns to you for help.

 
Input
The first line contains an integer T, indicating the number of test cases. Then follows T cases, each one contains N + 1 lines. The first line contains 2 integers: V, volume of a hole and N, number of equipment respectively. The next N lines contain N pairs of integers: Ai and Bi.

0<T<= 10, 0<V<10000, 0<N<1000, 0 <Ai< V, Ai <= Bi < 1000.

 
Output
For each case output “Yes” if Crixalis can move all his equipment into the new hole or else output “No”.
 
Sample Input
      
220 310 203 101 710 21 102 11

 
Sample Output
   
   
Yes No

 
Source

题意:

向一个容量为V的洞中放如入物品,每件物品有一个停放体积和一个可移动体积。问是否能放下全部的物品?

思路:—— 贪心

                                   停放体积         移动体积

                  第一件物品          a1             b1

  

                  第二件物品          a2             b2

如果这两件物品的移动体积都不大于洞的体积V

那么将单独比較两个物品的时候会发现:  a1+b2为先放第一件物品,后放第二件物品的最大瞬时体积

                                                        a2+b1为先放第二件物品。后放第一件物品的最大瞬时体积

那么我们就应该选择a1+b2和a2+b1中比較小的先放。

那么从2件物品。扩展到n件物品 如果n件物品的移动体积都不大于洞的体积V,

将N件物品依照a1+b2 < a2+b1进行排序,(事实上就是依照差值的大小)然后依次放入洞中。

PS: 

假设仅仅是单纯的依照Bi从大到小排序的话为WA;

看看这个案例就明确了。

21 2

8 18

1 20

Yes


代码例如以下:

#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
using namespace std;
struct num
{
    int a, b;
} p[1017];
bool cmp(num A, num B)
{
    return A.b-A.a > B.b-B.a;
}
int main()
{
    int t;
    int v, n;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d %d",&v,&n);
        for(int i = 0; i < n; i++)
        {
            scanf("%d %d",&p[i].a,&p[i].b);
        }
        sort(p,p+n,cmp);
        int i;
        for(i = 0; i < n; i++)
        {
            if(v >= p[i].b)
            {
                v-=p[i].a;
            }
            else
                break;
        }
        if(i == n)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116646.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月18日 上午8:00
下一篇 2022年1月18日 上午8:00


相关推荐

  • 豆包ai怎么增加次数

    豆包ai怎么增加次数

    2026年3月12日
    2
  • 什么是CSR文件

    什么是CSR文件CSR 是英文 CertificateS 的缩写 即证书签名请求 CSR 文件是申请 SSL 证书时所需要的一个数据文件 csr 文件介绍数字证书的核心 其实就是非对称加密 也就是公私钥对加密 非对称加密之所以安全 前提条件是用户必须要保障私钥的安全 因此在用户向 CA 申请数字证书时 用户首先需要在自己的电脑中先产生一个公私钥对 用户需要保管好自己的私钥 然后再把公钥和你的个人信息发送给 CA 机构 CA 机构通过你的公钥和个人信息最终签发出数字证书 而 CSR 文件 其实就是包含了用户公钥和个

    2026年3月18日
    2
  • python注释多行代码快捷键_python粘贴快捷键

    python注释多行代码快捷键_python粘贴快捷键Pycharm有着丰富且强大的快捷键组合,如果能熟练掌握常见快捷键的使用,那么绝对能提高你代码的编写效率和质量。之前写过一篇Pycharm常用的10个windows快捷键Pycharm最高效的快捷键集合,当然这只是快捷键中的很小一部分,还有很多高效的快捷键没有介绍到,今天就把所有的快捷键进行统一整理,包括windows和mac下的快捷键集合,便于后期查阅使用(文末附下载方式)。Pycharm常用快…

    2022年8月26日
    9
  • 安装pycharm的步骤_pycharm安装教程2020

    安装pycharm的步骤_pycharm安装教程2020简介Jetbrains家族和Pycharm版本划分:pycharm是Jetbrains家族中的一个明星产品,Jetbrains开发了许多好用的编辑器,包括Java编辑器(IntelliJIDEA)、JavaScript编辑器(WebStorm)、PHP编辑器(PHPStorm)、Ruby编辑器(RubyMine)、C和C++编辑器(CLion)、.Net编辑器(Rider)、iOS/ma…

    2022年8月25日
    6
  • java获取时间戳单位秒,如何测试给定的时间戳是以秒或毫秒为单位?「建议收藏」

    java获取时间戳单位秒,如何测试给定的时间戳是以秒或毫秒为单位?「建议收藏」Assumeagivenvariable,itiscontainingaUNIXtime-stamp,butwhetheritisinsecondsormillisecondsformatisunknown,IwanttoassigntoavariablewhichisinsecondsformatForExample:unkno…

    2025年9月5日
    6
  • 输入字符串的方式

    输入字符串的方式C 中常用的几种输入字符串的方式 1 scanfscanf 如果输入了空格会认为字符串结束 空格后的字符将作为下一个输入项处理 include cstdio usingnamespa intmain chars 100 scanf s s printf s s 输入 3 输出 cstdio

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号