HDU 1051 Wooden Sticks (不好想)

#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;

struct Home{ int l,w;}num[5001];

bool cmp(Home a,Home b)
{  
    if (a.l>=b.l) 
        return false;
    else return true;  
}
int main()
{  
    int i,T,n,sum;
	int mark[5001],number,pl;
	cin>>T;
		while(T-- && cin>>n)
		{
			memset(mark,0,sizeof(mark));
			for(i=0,sum=0,number=0;i<n;i++)
				cin>>num[i].l>>num[i].w;
			sort(num,num+n,cmp);
			while(number!=n)
			{
                   for (int j=0;j<n;j++)
                   {
					   if(!mark[j])
					   {
						   pl=j;
						   sum++;
						   break;
					   }
                   }
				   for (i=j;i<n;i++)
				   {
					   if(!mark[i] && num[i].w>=num[pl].w )
					   {
						   mark[i]=1;
						   number++;
						   pl=i;
					   }
				   }
			}		
			cout<<sum<<endl;
		}
    return 0;  
}

贪心的题目,先排序,然后根据weight进行判断,

提交的时候要选择C++  ,G++提交时错误的,无语!!

你可能感兴趣的:(贪心)