HDU 3177 Crixalis's Equipment 贪心

来源:互联网 发布:q版养成网络手游 编辑:程序博客网 时间:2024/06/06 02:20

题意:蝎子往自己的洞里搬运东西,告诉你洞的容量,告诉你搬运的东西的实际体积,和搬运物体时所需要的搬运空间(比如说你放一个长方体进去,可能所要的搬运空间是四条对角线的长度所构成的虚拟的体积),问你能否将这些东西全部搬到洞里。

思想:开始时,我以为是按所需的搬运空间从大到小排序,然后模拟进洞的过程。后来发现这样是不对的。

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;}


0 0