题目:http://acm.hdu.edu.cn/showproblem.php?pid=1051#include<iostream> #include<algorithm> #include<set> using namespace std; struct A { int a; int b; }; bool comp(A x,A y) { if(x.a!=y.a)return x.a<y.a; return x.b<y.b; } A c[10001]; int d[10001]; int main() { int n,m,i,num,tt,e,f,j; cin>>n; while(n--) { cin>>m; for(i=0;i<m;i++)cin>>c[i].a>>c[i].b; sort(c,c+m,comp); for(i=0;i<m;i++)d[i]=0; num=0; tt=0; j=0; while(num<m) { for(i=j;i<m;i++) { if(d[i]==0) { d[i]=1; j=i+1; num++; e=c[i].a; f=c[i].b; break; } } for(i=j;i<m;i++) { if(d[i]==0&&e<=c[i].a&&f<=c[i].b) { e=c[i].a; f=c[i].b; d[i]=1; num++; } } tt++; } cout<<tt<<endl; } return 0; } 小结:贪心算法,类似ZJUT_1099,对于处理过的标记,没处理过的先一次性处理完。