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;
}
原文地址:https://www.cnblogs.com/woshijishu3/p/4183388.html