• FatMouse's Speed


    题意:在老鼠体重增大的同时要使速度减少,换句话说就是在体重递增的条件下找出速度的最大下降子序列.

    输入:文件以eof结束,每一行两个,第i行表面第i只老鼠的体重和速度.

    输出:最优解的长度,以及路径

    Sample Input

    6008 1300
    6000 2100
    500 2000
    1000 4000
    1100 3000
    6000 2000
    8000 1400
    6000 1200
    2000 1900

    Sample Output

    4
    4
    5
    9
    7
    分析:先sort一下来确保质量递增,在此条件下找速度的最长下降子序列,那么现在的问题就是保存路径,由于提前想到是用结构题存储,那么路径的存储就会方便许多.

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    int vis[1010];
    int ans=1;
    int a,b;
    int flag;
    int q;
    int sum[1010];
    struct node
    {
        int cnt;
        int m;
        int s;
    } e[1005];
    bool camp(node a,node b)
    {
        if(a.m==b.m)
            return a.s>b.s;
            
        return a.m<b.m;
    }
    int main()
    {
        while(cin>>a>>b)
        {
            e[ans].m=a;
            e[ans].s=b;
            e[ans].cnt=ans;//因为排序后会乱,提前存好
            ans++;
        }
        sort(e+1,e+ans+1,camp);
        for(int i=0; i<1005; i++)
            vis[i]=-1;
        for(int i=0; i<ans; i++)
            sum[i]=1;
        for(int i=1; i<=ans; i++)
        {
            for(int j=1; j<i; j++)
            {
                if(e[i].s<e[j].s)
                {
                    if(e[i].m==e[j].m)
                        continue;
                    if(sum[i]<sum[j]+1)
                    {
                        sum[i]=sum[j]+1;
                        vis[i]=j;
                    }
                }
            }
            if(sum[i]>flag)
            {
                flag=sum[i];
                q=i;//这里找到最后一个
            }
        }
        cout<<flag<<endl;
        vector<int> v;
        v.clear();
        while(q!=-1)
        {
            v.push_back(e[q].cnt);
            q=vis[q];
        }
        for(int i=v.size()-1; i>=0; i--)
            cout<<v[i]<<endl;
        return 0;
    }
    
    


  • 相关阅读:
    MySQL数据库的安装与配置
    java中的反射机制
    详谈设计模式之单列模式
    servlet内部转发与重定向
    servlet基础语句总结
    Servlet映射的俩种方法以及优缺点
    eclipse和idea的快捷键比较及idea如何调节eclipse的快捷键
    servlet
    JDK下载与安装教程
    正则表达式查询
  • 原文地址:https://www.cnblogs.com/iloveysm/p/12329048.html
Copyright © 2020-2023  润新知