| 
	
	
		
			http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25
 //贪心 
  #include<iostream> 
  #include<algorithm> 
  using namespace std; 
  struct Node 
    { 
  int len; 
  int wei; 
  }; 
  bool comp(Node a,Node b) 
    { 
  if(a.len!=b.len) 
  return a.len>b.len; 
  else 
  return a.wei>b.wei; 
  } 
  int main() 
    { 
  int n,t; 
  cin>>t; 
  while(t--) 
     { 
  Node infor[5001]; 
  int i,j,t,hash[5001],max,minj; 
  cin>>n; 
  for(i=1;i<=n;i++) 
  scanf("%d%d",&infor[i].len,&infor[i].wei); 
  sort(infor+1,infor+n+1,comp); 
  hash[0] = infor[1].wei; 
  t=1; 
  for(i=2;i<=n;i++) 
     { 
  max = 10001; 
  for(j=0;j<t;j++) 
     { 
  if(infor[i].wei<=hash[j] && hash[j]-infor[i].wei < max) 
     { 
  max = hash[j]-infor[i].wei; 
  minj = j; 
  } 
  } 
  if(max == 10001) 
     { 
  hash[t++]=infor[i].wei; 
  continue; 
  } 
  hash[minj] = infor[i].wei; 
  } 
  cout<<t<<endl; 
  } 
  return 0; 
  }     |