</pre><pre name="code" class="cpp">#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; struct Equipment
{
int a;
int b;
}equip[1000]; bool cmp(Equipment x,Equipment y)
{
return x.a+y.b<x.b+y.a;
} int main()
{
int t,n,v,p;
cin>>t;
while(t--)
{
cin>>v>>n;
for(int i=0;i<n;i++)
cin>>equip[i].a>>equip[i].b;
sort(equip,equip+n,cmp);
p=1;
for(int i=0;i<n;i++)
{
if(equip[i].b>v)
{
p=0;
break;
}
v-=equip[i].a;
}
if(p)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}

Crixalis's Equipment

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1274    Accepted Submission(s): 510

Problem Description
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
2
 
20 3
10 20
3 10
1 7
 
10 2
1 10
2 11
 
Sample Output
Yes
No
 
 
分析:
该题讲的是搬家问题,搬运东西需要占多大空间还有搬运时要求的空间。该题的贪心原则则是尽可能的装入东西,即

停放体积 移动体积

第一件物品   a1   b1

第二件物品   a2   b2

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

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

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

我们应该选择a1+b2和a2+b1中比较小的先放那么从2件物品 扩展到N件物品 

假设n件物品的移动体积都不大于洞的体积V(如果有大于的 那么结果必然是NO)

将N件物品按照a1+b2<a2+b1进行排序 然后依次放入洞中,即按照差值从大到小放入洞中


【贪心】【HDU3177】 搬家问题的更多相关文章

  1. 小蚂蚁搬家<贪心>

    题意: 由于预知未来可能会下雨,所以小蚂蚁决定搬家.它需要将它的所有物品都搬到新家,新家的体积为V,小蚂蚁有N件物品需要搬,每件物品的体积为Ai,但他发现:每件物品需要新家剩余体积大于等于Bi才能使它 ...

  2. HDU3177 贪心

    Crixalis's Equipment Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. HDU1257 最少拦截系统 (贪心+STL+二分)

    第一次在博客园写博客,好紧张 .博客搬家居然很多代码成了乱码,欲哭无泪,妈咪. 开学东西太多了吧,没时间写备注,有点时候只能贴个代码,以后有时间再加备注吧,只贴代码不是好习惯. 咦,贪心怎么写,我只会 ...

  4. bzoj 1110 [POI2007]砝码Odw 贪心+进制转化

    [POI2007]砝码Odw Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 661  Solved: 366[Submit][Status][Disc ...

  5. ZCMU Problem H: Crixalis's Equipment(贪心,排序)

    #include<stdio.h> #include<stdlib.h> struct node { int a,b; }c[1002]; int cmpxy(const st ...

  6. 【BZOJ1110】[POI2007]砝码Odw 贪心

    [BZOJ1110][POI2007]砝码Odw Description 在byteotian公司搬家的时候,他们发现他们的大量的精密砝码的搬运是一件恼人的工作.公司有一些固定容量的容器可以装这些砝码 ...

  7. [bzoj1110][POI2007]砝码Odw_贪心

    bzoj-1110 POI-2007 砝码Odw 参考博客:http://hzwer.com/4761.html 题目大意:在byteotian公司搬家的时候,他们发现他们的大量的精密砝码的搬运是一件 ...

  8. BZOJ 3119 Book (贪心+数学推导)

    手动博客搬家: 本文发表于20191029 22:49:41, 原地址https://blog.csdn.net/suncongbo/article/details/78388925 URL: htt ...

  9. HDU 2795 Billboard (线段树+贪心)

    手动博客搬家:本文发表于20170822 21:30:17, 原地址https://blog.csdn.net/suncongbo/article/details/77488127 URL: http ...

随机推荐

  1. C#.NET 各种连接字符串

    C#.NET 各种连接字符串 近期连接数据库时,经常忘记连接字符串是如何的格式,现在此备注 此文章引用http://www.cnblogs.com/zhiqiang-imagine/archive/2 ...

  2. POJ1275/ZOJ1420/HDU1529 Cashier Employment (差分约束)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 题意:一商店二十四小时营业,但每个时间段需求的出纳员不同,现有n个人申请这份工作, ...

  3. 使用正则表达式限制swing (JTextField等) 的输入

    之前使用Qt编写Gui程序的时候,可以直接使用正则表达式限制所有输入框,非常方便. 这段时间要做一份课程设计,使用java编写,ui要限制输入,比如只能输入x位数字,输入身份证等. 百度了许多资料,发 ...

  4. 从C到C++的升级

    C++的语言类型 C++是静态的强类型语言. 静态语言:数据类型在编译期间检查,因此在写程序时需要声明变量的类型 强类型语言:强调数据类型,不同的数据类型间的转换需要进行强制类型转换 C与C++的关系 ...

  5. (原)Ubuntu16中卸载并重新安装google的Protocol Buffers

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5782992.html 目前最新的是1.6.1 1. 卸载掉老版本的Protocol: sudo apt ...

  6. Oracle 数据文件 reuse 属性 说明(转载)

    Oracle 表空间 创建参数 说明 http://blog.csdn.net/tianlesoftware/archive/2011/01/27/6166928.aspx 当我们对表空间添加数据文件 ...

  7. full-background.js

    $(window).on('load', function () { $(window).trigger('resize'); }); $(function () { var $window = $( ...

  8. class Core<T> where T : class, new() 求解

    where T:泛型约束,约束类型T必须具有无参的构造函数表示T必须是class类型或它的派生类.new()构造函数约束允许开发人员实例化一个泛型类型的对象. 一般情况下,无法创建一个泛型类型参数的实 ...

  9. Font Rending 的 Hint 机制对排版的影响

    Font Rending 的 Hint 机制对排版的影响[转] 在设计一种 Font 时,设计者使用的是一个抽象的单位,叫做 EM,来源于大写 M 的宽度(通常英文字体中大写 M 的宽度最大).EM ...

  10. 三星S5360(GALAXY Y)首次刷机尝试~

    刷机包下载: http://www.romjd.com/Device/samsung-s5360 http://www.shuaji.com/rom/2033.htm#down http://www. ...