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;
    }
  • 相关阅读:
    javaweb:Filter过滤器
    javaScript:高级
    javascript:基础
    Boostrao:轮播图
    Bootstrap案列:首页界面
    Bootstrap学习笔记
    javaweb:respone
    javaweb:jsp
    五、结构型模式--->07.享元模式
    五、结构型模式--->06.组合模式
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12238364.html
Copyright © 2011-2022 走看看