//贪心 //怎么看都觉得测试数据的l和w是反着的 //11075395 c00h00g 1065 Accepted 200K 16MS C++ 1172B 2012-12-03 22:14:06 #include<stdio.h> #include<stdlib.h> #include<algorithm> using namespace std; struct Node{ int l,w; }; Node stick[5005]; bool visited[5005]; int n; int T; int cmp(Node a,Node b){ if(a.l!=b.l) return a.l<b.l; else return a.w<b.w; } int main(){ scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d%d",&stick[i].l,&stick[i].w); memset(visited,false,sizeof(visited)); sort(stick,stick+n,cmp); int res=0; //查找最长的 int l,w; for(int i=0;i<n;i++){ if(visited[i]==false){ l=stick[i].l; w=stick[i].w; visited[i]=true; for(int j=i+1;j<n;j++){ //少了visited[j]==false这一句,WA了好几次 if(stick[j].l>=l&&stick[j].w>=w&&visited[j]==false){ l=stick[j].l; w=stick[j].w; visited[j]=true; } } res++; } } printf("%d\n",res); } return 0; }