hdu 1160 FatMouse's Speed 最长上升子序列变形+排序+方案打印

时间:2021-10-06
本文章向大家介绍hdu 1160 FatMouse's Speed 最长上升子序列变形+排序+方案打印,主要包括hdu 1160 FatMouse's Speed 最长上升子序列变形+排序+方案打印使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一看两个维度,下意识要么排序再dp要么对两个分别开一维。

先sort可以保证体重上升,再跑最长上升子序列(对原来的数取相反数即可)。

#

填坑1:如果不存在合法解的话,ans也要更新,所以在枚举j前要加个if

填坑2:如果ans=1的话,调整一下回溯语句的顺序可以防止最后一个卡了没输出

填坑3:改了cmp,判断了weight相同的情况,写了return <和return >的,仍wa

----

待填

#include <iostream>
#include <math.h>
#include <string.h>
#include <vector>
#include <map>
#include <queue>
#include <stdio.h>
#include <algorithm>
#include <cstdio>
using namespace std;
const int maxn=5000;
struct lys{
    int weight,speed;
}mouse[maxn];
bool cmp(lys a,lys b)
{
    if(a.weight!=b.weight)
     {
         return a.weight<b.weight;
     }
     else {
         return a.speed<b.speed;
     }
}
int print[maxn],dp[maxn],fa[maxn];
int main( ){

    
    //freopen("lys.in","r",stdin);
    int a,b,cnt=0;
    while(cin>>a>>b)
    {
           cnt++;
        mouse[cnt].weight=a;mouse[cnt].speed=-b;
    }
    sort(mouse+1,mouse+1+cnt,cmp);
    
    
    int ans=-20211006,pos;
    
    for(int i=1;i<=cnt;i++)
     { dp[i]=1;
       fa[i]=i;
       
       if(dp[i]>ans)
        {
            ans=dp[i];
            pos=i;
        }
                
                
         for(int j=1;j<=i-1;j++)
          {
              if(mouse[i].speed>mouse[j].speed)
               {
                   if(dp[j]+1>dp[i])
                   {
                   dp[i]=max(dp[i],dp[j]+1);
                fa[i]=j;
                if(dp[i]>ans)
                {
                    ans=dp[i];
                    pos=i;
                }
                }
             }
          }
     }
     
     printf("%d\n",ans);
     
     cnt=0;
     

     
     for(int i=pos;;)
     {  cnt++;
         print[cnt]=i;
         if(fa[i]==i)
         {
             break;
        }
        i=fa[i];
     }
     
     for(int i=cnt;i>=1;i--)
     {
         printf("%d\n",print[i]);
     }
}

原文地址:https://www.cnblogs.com/liyishui2003/p/15371208.html