POJ 1065
思路:
结构体排序,l或w哪个优先排都行,从小到大排
从没有被标记的点开始往后面找满足条件的,更新,标记
来个变量数分了多少组
AC代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct node{
int l,w;
bool friend operator<(node a,node b){
if(a.l==b.l)
return a.w<b.w;
return a.l<b.l;
}
}a[5005];
int main(){
int t,n;
cin>>t;
while(t--){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i].l>>a[i].w;
sort(a+1,a+1+n);
int s=0;
int vis[5005];
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++){
if(vis[i]==0){
s++;
int t1=a[i].l,t2=a[i].w;
for(int j=i+1;j<=n;j++){
if(t1<=a[j].l&&t2<=a[j].w&&vis[j]==0){
t1=a[j].l;
t2=a[j].w;
vis[j]=1;
}
}
}
}
cout<<s<<endl;
}
return 0;
}