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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深信服SCSA认证复习笔记三

    深信服SCSA认证复习笔记三深信服复习笔记三基础题目:1.最大传输单元(MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。是包或者帧的最大长度,一般以字节记。如果MTU过大,则路由器会拒绝此包,并下发通知源节点2.Telnet是常用的远程控制Web服务器的方法。这个可以判断网络是不是畅通的这一种方法,ping命名不能准确表示是不是在可以上网。3.防火墙:传统防火墙(包过滤防火墙)判断信息(五元组)工作范围(网络层,传输层)4.防火墙部署模式:路由模式透明模式虚拟网线模式混合模式旁

    2022年6月20日
    18
  • 安卓短信转发qq邮箱

    安卓短信转发qq邮箱fork一个github项目简介准备工作Tips简介最近不怎么带手机,所以收不到一些验证码什么的,所以想搞一个app放手机上将短信以有邮件的形式发送到指定邮箱,然后用电脑查看邮件,这样就可以不用带手机了。在github上找到一个项目叫sms-backup-plus,于是准备在这个项目的基础上进行更改。准备工作安装androidStudio学习kotlin怎么整合java和k…

    2022年9月25日
    0
  • 初探js逆向「建议收藏」

    初探js逆向「建议收藏」转载自三尾先生博客初探js逆向在开始之前想先说下阅读完三尾先生这篇文章的一点个人理解,文章写得挺好的,很值得新手学习了解,首先谈下逆向激活成功教程思路1.需要逆向的时候一般是遇到了加密问题,加密情况有参数加密,有结果加密。但不管怎样的加密只要页面能正常显示,那就有解密过程!2.先找到加密的字段名,通过字段名在sources全局搜索3.在含有这些字段的位置打断点,一般sources里看到的会是一行的压缩代码,我们可以通过点击左下角的双大括号格式化js代码然后通过断点一步步查看参数在哪一步骤发生了变

    2022年6月22日
    40
  • fpga流水线设计思想_fpga视频容易入门

    fpga流水线设计思想_fpga视频容易入门流水线设计的思想来源是高流量,也就是说时间延迟固定的情况下尽可能的产生高的流量,使得整体的信号传输速率得到提升。这一概念我是最早在《高级FPGA设计——结构、实现和优化》(SteveKilts)一书中接触到的。作者在书中提到,高流量设计的抽象术语就是“流水线”。作者指出:流水线设计的优越性是新数据在前面的数据完成之前就可以进行处理。并给出一个例子,硬件实现计算一个数的三次方。这给出设计代码,用于下文分析比较。1.类似于软件的递归算法实现(非流水线结构)`timescale1ns/

    2022年8月14日
    1
  • 北京移动全网优惠_随着竞争的加剧

    北京移动全网优惠_随着竞争的加剧 【eNet硅谷动力消息】被叫全免计划终于推出了,这个计划可以说是大家翘首以盼,许多人大大节省了话费,对很多人来说是一个大大的福音,但也因此造成了中国通讯资费的改革提速,从而加剧了行业之间的竞争。  中移动北京公司市场部负责人介绍,5月23日公司正式推出了全球通标准资费“被叫全免计划”。自即日开始,北京地区的全球通客户切实实现被叫免费,接听时间没有限制,进一步呼应了社会的期盼。按照本次…

    2022年10月7日
    0
  • pagecontext request session_pagecontent

    pagecontext request session_pagecontent ${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于&lt;%=request.getContextPath()%&gt; 。 也就是取出部署的应用程序名或者是当前的项目名称 比如我的项目名称是demo1在浏览器中输入为http://localhost:8080/demo1/a.jsp${pageContext.request.co…

    2022年9月17日
    0

发表回复

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

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