zoj 1025Wooden Sticks(贪心)

 递增子序列的最小组数。可以直接贪心,扫一遍

#include<iostream>

#include<cstring>

#include<cstdio>

#include<algorithm>

using namespace std;

struct stick{

    int h,w;

}Sticks[5005];

bool cmp(stick a,stick  b)

{

    return (a.h<b.h)||(a.h==b.h&&(a.w<b.w));

}



int main(void)

{

    int n;

    int t;

    cin>>t;

    while(t--)

    {

        cin>>n;

        

        for(int i=0;i<n;i++){

            cin>>Sticks[i].h>>Sticks[i].w;

        }

        sort(Sticks,Sticks+n,cmp);

        int cnt=0;

        int bzw[5005]={0};

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

        {

            if(bzw[i]==0)

            {

                cnt++;

                int temp=Sticks[i].w;

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

                {

                    if(bzw[j]==0&&temp<=Sticks[j].w)

                    {    

                        bzw[j]=1;

                        temp=Sticks[j].w;

                    }

                }

            }

        }

        cout<<cnt<<endl;

        

    }

    return 0;

}

 

你可能感兴趣的:(ZOJ)