HDU 3177 Crixalis's Equipment 贪心

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

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

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


你可能感兴趣的:(HDU 3177 Crixalis's Equipment 贪心)