zoukankan      html  css  js  c++  java
  • FatMouse's Speed HDU

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    struct node
    {
        int w, s;
        int index;  //储存标号
    } mouse[1005]; //小鼠的信息
    //先体重,后速度
    bool cmp(node a,node b)
    {
        if(a.w==b.w)  
            return a.s<b.s;
        return a.w<b.w;
    }
    int main()
    {
        int dp[1005],load[1005],ans[1005];
        int i, maxl,maxi,n,temp,x;
        i=1;
        while(scanf("%d%d",&mouse[i].w,&mouse[i].s)!= EOF)
        {
            mouse[i].index=i;
            dp[i]=1;
            load[i]=0;
            i++;
        }
        sort(mouse+1,mouse+i,cmp);
        //总数量 
        n=i-1;
        maxl=0;
        for(int i=2;i<=n;i++)
        {
            for(int j=1;j<i;j++)
                if(mouse[i].w>mouse[j].w&&mouse[i].s<mouse[j].s&&dp[i]<dp[j]+1)
                {
                    //如果i的体重比j的小,而且速度j的大,并且还得j的最长子序列加一要大于目前i的最长子序列
                    dp[i] = dp[j] + 1;
                    load[i] = j;
                }
            if(dp[i]>maxl)
            {
                //最长序列 
                maxl = dp[i];
                //序列最后一个 
                maxi = i;
            }
        }
        temp=maxi;
        x=0;
        //将最终的结果标号存入数组中
        while(temp!=0)
        {
            ans[x]=temp;
            temp=load[temp];
            x++;
        }
        printf("%d
    ", maxl);
        for(int i=maxl-1;i>= 0;i--)//标号存的时候是倒序,所以要给它反过来
            printf("%d
    ",mouse[ans[i]].index);
        return 0;
    }
  • 相关阅读:
    按钮,文本框
    d01
    第一天,对于课程和工作的了解
    javaweb概念性知识
    Jdbc概念性知识
    连接数据库,和数据增删改
    oracle基础概念性知识
    面向对象java知识汇总题
    javaweb
    date日期
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12238364.html
Copyright © 2011-2022 走看看