nyoj236 心急的C小加

 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 }

//据说是贪心

你可能感兴趣的:(OJ)