1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 struct node{ 5 int l,w; 6 }stick[5001]; 7 bool cmp(node a,node b) 8 { 9 if(a.l!=b.l) return b.l>a.l; 10 return b.w>a.w; 11 } 12 int main() 13 { 14 int i,j,n,cnt,T; 15 cin>>T; 16 while(T--) 17 { 18 for(cin>>n,i=0;i<n;++i) 19 cin>>stick[i].l>>stick[i].w; 20 sort(stick,stick+n,cmp);//l,w都按从小到大排序,l优先 21 for(cnt=i=0;i<n;++i) 22 if(stick[i].w){ 23 cnt++; 24 for(j=i+1;j<n;++j) 25 if(stick[j].w>=stick[i].w){ 26 stick[i].w=stick[j].w;//刚开始这里忘了更新stick[i].w的值,贡献了几个WA 27 stick[j].w=0;//置零,避免下次重复且会出错的判断 28 } 29 } 30 cout<<cnt<<endl; 31 } 32 return 0; 33 }
//据说是贪心