hdu1051

2018-06-04 11:08:34 浏览数 (1)

#include<iostream>  

#include<algorithm>  

using namespace std;  

struct SIZE  

{  

    int l;  

    int w;  

}sticks[5005];  

int flag[5005];  

bool cmp(const SIZE &a,const SIZE &b)//这里是排序!  

{//写排序函数的时候要特别的小心!  

    //if(a.w!=b.w)//这里写错了,这里表示如果重量不等,按照长度排,如果重量相等,则按照重量排!(没意义!)  

    if(a.l!=b.l)  

        return a.l>b.l;//长度不等时按照长度排,从大到小排  

    else  

        return a.w>b.w;//长度相等时,再按照重量从大到小排列  

}  

int main()  

{  

    int n,min,cases;  

    int i,j,s;  

    cin>>cases;   

    for(j=0;j<cases;j )  

    {  

        cin>>n;  

        for(i=0;i<n;i )  

        {  

            cin>>sticks[i].l>>sticks[i].w;  

            flag[i]=0;  

        }  

        sort(sticks,sticks n,cmp);  

        s=0;  

        for(i=0;i<n;i )  

        {  

            if(flag[i]) continue;  

            min=sticks[i].w;  

            for(int j=i 1;j<n;j )  

            {  

                if(min>=sticks[j].w && !flag[j])  

                {  

                    min=sticks[j].w;  

                    flag[j]=1;  

                }  

            }  

            s ;  

        }  

        cout<<s<<endl;  

    }  

    //system("pause");  

    return 0;  

}  

  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;  
  4. struct SIZE  
  5. {  
  6. int l;  
  7. int w;  
  8. }sticks[5005];  
  9. int flag[5005];  
  10. bool cmp(const SIZE &a,const SIZE &b)//这里是排序!
  11. {//写排序函数的时候要特别的小心!
  12. //if(a.w!=b.w)//这里写错了,这里表示如果重量不等,按照长度排,如果重量相等,则按照重量排!(没意义!)
  13. if(a.l!=b.l)  
  14. return a.l>b.l;//长度不等时按照长度排,从大到小排
  15. else
  16. return a.w>b.w;//长度相等时,再按照重量从大到小排列
  17. }  
  18. int main()  
  19. {  
  20. int n,min,cases;  
  21. int i,j,s;  
  22.     cin>>cases;   
  23. for(j=0;j<cases;j )  
  24.     {  
  25.         cin>>n;  
  26. for(i=0;i<n;i )  
  27.         {  
  28.             cin>>sticks[i].l>>sticks[i].w;  
  29.             flag[i]=0;  
  30.         }  
  31.         sort(sticks,sticks n,cmp);  
  32.         s=0;  
  33. for(i=0;i<n;i )  
  34.         {  
  35. if(flag[i]) continue;  
  36.             min=sticks[i].w;  
  37. for(int j=i 1;j<n;j )  
  38.             {  
  39. if(min>=sticks[j].w && !flag[j])  
  40.                 {  
  41.                     min=sticks[j].w;  
  42.                     flag[j]=1;  
  43.                 }  
  44.             }  
  45.             s ;  
  46.         }  
  47.         cout<<s<<endl;  
  48.     }  
  49. //system("pause");
  50. return 0;  
  51. }  

0 人点赞