题目:http://poj.org/problem?id=1065
思路:先按照L排序转换成一维,在对W贪心即可。
#include<iostream>
#include<algorithm>
using namespace std;
const int MAX=5001;
struct wooden{
int l,w,flag;
}wd[MAX];
bool Cmp(wooden x,wooden y){
if(x.l!=y.l) return x.l<y.l;
return x.w<y.w;
}
int main()
{
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>wd[i].l>>wd[i].w;
wd[i].flag=0;
}
sort(wd,wd+n,Cmp);
int res=0;
for(int i=0;i<n;i++){
if(wd[i].flag)continue;
res++;
int cur=wd[i].w;
for(int j=i+1;j<n;j++){
if(!wd[j].flag && wd[j].w>=cur){
wd[j].flag=1;
cur=wd[j].w;
}
}
}
cout<<res<<endl;
}
return 0;
}