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


相关推荐

  • socketpair原理_socket方法

    socketpair原理_socket方法今天跟人谈到socketpair的问题,晚上回来写了个程序验证下自己的猜测!   先说说我的理解:socketpair创建了一对无名的套接字描述符(只能在AF_UNIX域中使用),描述符存储于一个二元数组,eg.s[2].这对套接字可以进行双工通信,每一个描述符既可以读也可以写。这个在同一个进程中也可以进行通信,向s[0]中写入,就可以从s[1]中读取(只能从s[1]中读取),也可以在

    2022年10月14日
  • tcp攻击脚本_防御的意思

    tcp攻击脚本_防御的意思目录相关原理(tcp基础)实例演示关于防御措施相关原理(tcp基础)三次握手:TCP是基于IP网络层之上的传输层协议,用于端到端的可靠的字节流传输。过程:1.C向S发送连接请求,标记位SYN设为1,且随机设置序列号seq2.S返回确认消息,ACK设为seq+1,标记位SYN设为1,随机序列号seq3.C返回确认消息,ACK设为seq+1四次挥手:四次挥手指正常连接中断的情况。过程:…

    2022年10月1日
  • 政府大数据应用案例,政府大数据治理方法[通俗易懂]

    政府大数据应用案例,政府大数据治理方法[通俗易懂]​大数据不仅将改变生产方式、生活方式,社会组织方式尤其是政府治理也将因之发生深刻变革。以大数据提升政府治理能力是大势所趋。科技革命的加速推进特别是大数据时代的到来,迫切要求政府治理加快。大数据将成为加快政府治理能力现代化的最重要、最有力推手。在大数据思维下,基于大数据的科学决策、精细管理、精准服务将成为常态,将大大推动政府管理理念和社会治理模式进步,推进法治政府、创新政府、廉洁政府、智慧政府和服务型政府建设,逐步实现治理能力现代化。政府如何利用大数据提升治理水平?1.用数据说话治理理念的转变是提高政府

    2022年6月4日
  • Android 代码设置RelativeLayout元素居中

    Android 代码设置RelativeLayout元素居中RelativeLayoutrelativeLayout=newRelativeLayout(this);RelativeLayout.LayoutParamsrlp=newRelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_C

    2022年7月17日
  • JavaScript onmousemove 事件

    JavaScript onmousemove 事件DefinitionandUsage定义与用法Theonmousemoveeventoccurswhenthemousepointerismoved.当鼠标移动时触发onmou

    2022年7月2日
  • ubuntu远程桌面控制_ubuntu 远程控制

    ubuntu远程桌面控制_ubuntu 远程控制已经使用的,备份Section”Monitor”Identifier”Monitor0″HorizSync28.0-80.0VertRefresh48.0-75.0#https://arachnoid.com/modelines/#1920×1080@60.00Hz(GTF)hsync:67.08kHz;pclk:172…

    2022年8月21日

发表回复

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

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