zoukankan      html  css  js  c++  java
  • hdu1160dp

    https://vjudge.net/contest/68966#problem/J

    #include<map>
    #include<set>
    #include<list>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define ll long long
    
    using namespace std;
    
    const int N=1005,inf=0x3f3f3f;
    struct edge{
       int w,v;//w重量,v速度
       int in;//记录位置
    }e[N];
    int pre[N];
    void print(int x)
    {
        if(x!=-1)print(pre[x]);
        else
        return ;
        printf("%d
    ",x+1);
    }
    bool comp(const edge &a,const edge &b)
    {
        if(a.w!=b.w)return a.w<b.w;
        return a.v>b.v;
    }
    int main()
    {
        int a,b,cnt=0,dp[N];
        while(scanf("%d%d",&a,&b)!=EOF){
            e[cnt].w=a;
            e[cnt].v=b;
            e[cnt].in=cnt;
            cnt++;
        }
        sort(e,e+cnt,comp);
        memset(pre,-1,sizeof(pre));
        int ans=0,index=0;
        for(int i=0;i<cnt;i++)
        {
            dp[i]=1;
            for(int j=0;j<i;j++)
            {
                if(e[i].w>e[j].w&&e[i].v<e[j].v)
                   if(dp[i]<dp[j]+1)
                   {
                       dp[i]=dp[j]+1;
                       pre[e[i].in]=e[j].in;
                   }
            }
            if(ans<dp[i])
            {
                ans=dp[i];
                index=e[i].in;
            }
        }
        printf("%d
    ",ans);
        print(index);
        return 0;
    }

    输出技巧很重要,也可以使用栈来保存后输出。

    刚开始做就是没想到要排序

  • 相关阅读:
    Repeatable Read
    Read Committed
    Read Uncommitted
    sql 事务
    实用sql语句
    管理mysql
    mysql
    sql delete语句
    sql update语句
    sql INSERT语句
  • 原文地址:https://www.cnblogs.com/acjiumeng/p/6564003.html
Copyright © 2011-2022 走看看