HDU 3177 Crixalis's Equipment 贪心
2015-09-29 00:10
423 查看
题意:蝎子往自己的洞里搬运东西,告诉你洞的容量,告诉你搬运的东西的实际体积,和搬运物体时所需要的搬运空间(比如说你放一个长方体进去,可能所要的搬运空间是四条对角线的长度所构成的虚拟的体积),问你能否将这些东西全部搬到洞里。
思想:开始时,我以为是按所需的搬运空间从大到小排序,然后模拟进洞的过程。后来发现这样是不对的。
EX:V=26
19 20
5 9
2 9
如果是用上面的方法得到的结果显然是No,但是实际上它是可以被放进去的,现在把它当作是现实生活中的事情,我们应该先把,浪费空间小的东西先运进去,洞的大小肯定是可以装进所有的东西的实际大小,利用率高的进去肯定是没有错的。
思想:开始时,我以为是按所需的搬运空间从大到小排序,然后模拟进洞的过程。后来发现这样是不对的。
EX:V=26
19 20
5 9
2 9
如果是用上面的方法得到的结果显然是No,但是实际上它是可以被放进去的,现在把它当作是现实生活中的事情,我们应该先把,浪费空间小的东西先运进去,洞的大小肯定是可以装进所有的东西的实际大小,利用率高的进去肯定是没有错的。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; struct node { int wu,xu; }e[1000+5]; int V,n; bool cmp(node a,node b) { return a.xu-a.wu>b.xu-b.wu; } void Input() { scanf("%d%d",&V,&n); for(int i=1;i<=n;i++) { scanf("%d %d",&e[i].wu,&e[i].xu); } } void treatment() { sort(e+1,e+n+1,cmp); int shen=V,mark=1; for(int i=1;i<=n;i++) { if(e[i].xu<=shen) { shen-=e[i].wu; } else { mark=0; break; } } if(mark) printf("Yes\n"); else printf("No\n"); } int main() { int t; scanf("%d",&t); while(t--) { Input(); treatment(); } return 0; }
相关文章推荐
- [转自codeforces] How to come up with the solutions: techniques
- Druid 导致图标字体文件不能加载的问题
- UITextField基础属性
- UITextField Delegate 键盘弹起
- 隐藏UIScrollView的滚动条的方法
- UIButton的一些技巧
- UIButton 技巧setTitleEdgeInsets
- UIPickerView 使用
- IOS UIAlertView
- CAS:PKIX path building failed
- Dynamic Web Module 3.0 requires Java 1.6 or newer
- UINavigationControl笔记
- 【UIKit-110-7】#import <UIKit/UITableView.h>提前注册
- 【UIKit-110-6】#import <UIKit/UITableView.h>外观
- AndroidUI 视图动画-透明动画效果 (AlphaAnimation)
- AndroidUI 视图动画-透明动画效果 (AlphaAnimation)
- AbstractQueuedSynchronizer 源码理解
- 使用代码自定义UIView注意一二三(转)
- [Android] java.lang.IllegalArgumentException: Illegal character in query at index 57
- UVa133——The Dole Queue