zoukankan      html  css  js  c++  java
  • 类似LIS+贪心(ZOJ1025)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25

    解题报告:

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #define MAXN 5005
    
    using namespace std;
    
    struct stick
    {
        int l;///木棒的长度
        int w;///木棒的重量
    } data[MAXN];
    
    int cmp(stick a,stick b)
    {
        ///长度优先
        if(a.l==b.l)
            return a.w<b.w;
        else return a.l<b.l;
    }
    
    int DP(int n,stick a[])
    {
        ///数组b[]表示木棒的分组的序号
        int b[MAXN];
        memset(b,0,sizeof(b));
        int i,j,k;
        b[0]=1;
        for(i=1;i<n;i++)
        {
            ///计算第i个木棒的分组序号
            k=0;
            for(j=0;j<i;j++)
            {
                if(a[i].w<a[j].w&&k<b[j])
                    k=b[j];
            }
            b[i]=k+1;
        }
        int _max=0;
        for(int i=0;i<n;i++)
        {
            if(_max<b[i])
                _max=b[i];
        }
        return _max;
    }
    
    
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int n;
            scanf("%d",&n);
            for(int i=0; i<n; i++)
            {
                scanf("%d%d",&data[i].l,&data[i].w);
            }
            sort(data,data+n,cmp);
            printf("%d
    ",DP(n,data));
        }
        return 0;
    }
  • 相关阅读:
    什么是“方法”
    break与continue
    循环结构2
    循环结构1
    Switch多选择结构
    if选择结构
    Scanner方法
    Doc参数信息
    运算符号
    变量与常量
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5330740.html
Copyright © 2011-2022 走看看