【题解】洛谷P1233木棍加工 贪心

题目链接
按照长度降序排序,再根据宽度来算。

#include
#include
using namespace std;
#define _rep(i,a,b) for(int i=(a);i<=(b);i++)
const int N=5e3+10;
int n,vis[N];
struct node{
    int l,w;
    bool operator <(const node&rhs)const{
    return l>rhs.l||(l==rhs.l&&w>rhs.w);}
}wood[N];
int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%d",&n);
    _rep(i,1,n)scanf("%d%d",&wood[i].l,&wood[i].w);
    sort(wood+1,wood+n+1);
    int pre=0x3f3f3f3f,cnt=0;
    _rep(i,1,n)
    {
        if(!vis[i])
        {
            vis[i]=1;
            cnt++;
            pre=wood[i].w;
            _rep(j,1,n)if(!vis[j]&&wood[j].w<=pre)vis[j]=1,pre=wood[j].w;
        }
    }
    printf("%d\n",cnt);
    return 0;
}

你可能感兴趣的:(洛谷,贪心)