码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1160 FatMouse's Speed

时间:2019-10-21 13:29:30      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:动态规划   const   amp   struct   code   sizeof   sort   mil   贪心   

这题是动态规划,贪心和排序。

状态表示:d[i]表示前i位的最长满足要求子序列的长度。

状态转移:当重量严格大于前一只并且速度严格大于前一只的时候更新转移数组  d[i]=max(d[i],d[j]+1);

因为不仅要求输出最长的子序列的长度,还要求输出编号,就注意推理,为了减少时间复杂度把小老鼠的体重降序排列

 

#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int d[N],p[N],cnt=0,ans;
struct node
{
    int w,s,num;
}a[N];
bool cmp(node x,node y)
{
    return x.w<y.w;
}
int main()
{
    while(~scanf("%d%d",&a[cnt].w,&a[cnt].s))  
    {
        d[++cnt]=1;
        a[cnt].num=cnt+1;
    } 
    ans=cnt;
    d[ans]=0;
    sort(a,a+cnt,cmp);
    memset(p,-1,sizeof(p));
    cnt-=1;
    for(int i=cnt;i>=0;i--)
        for(int j=cnt;j>i;j--)
        {
            if(d[j]+1>d[i]&&a[i].w<a[j].w&&a[i].s>a[j].s)
            {
                p[i]=j;    d[i]=d[j]+1;
                if(d[ans]<d[i])    ans=i;
            }
        }
    printf("%d\n",d[ans]);
    while(~ans)
    {
        printf("%d\n",a[ans].num);
        ans=p[ans];
    }
    return 0;
}

 

HDU 1160 FatMouse's Speed

标签:动态规划   const   amp   struct   code   sizeof   sort   mil   贪心   

原文地址:https://www.cnblogs.com/Siv0106/p/11712891.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!