hdu 3177 差排

要求当前容量是否能把所有东西都放下,且放一个容量少一点。按差值进行排序。

code:

#include <iostream>
using namespace std;
struct thing
{
	int aroom;
	int broom;
};
int cmp(thing a,thing b)		
{
	if(a.broom-a.aroom>b.broom-b.aroom)
	{
		return 1;
	}
	return 0;
}
int main(int argc, char *argv[])
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int v,n;
		scanf("%d%d",&v,&n);
		int i;
		int flagfang=0;
		thing t[1005];
		for(i=0;i<n;i++)
		{
			scanf("%d%d",&t[i].aroom,&t[i].broom);	
			
		}
		sort(t,t+n,cmp);	//进行差排
		for(i=0;i<n;i++)
		{
			if(t[i].broom>v)
			{
				flagfang=1;
				break;
			}
			else
			{
				v-=t[i].aroom;
			}
		} 
		if(v<0||flagfang==1)
		{
			printf("No\n");
		}else{
			printf("Yes\n");
		}
	}
	
		
	
	return 0;
}

 

你可能感兴趣的:(hdu 3177 差排)