HDU 1160 FatMouse's Speed

来源:互联网 发布:数据结构设计 编辑:程序博客网 时间:2024/05/21 00:45

sort排序一下就OK了啊

ac代码

#include<stdio.h>#include<string.h>#include<iostream>using namespace std;struct node{    int num,w,s;}l[1010];struct asdf{    int xx,sum;}dp[1010];int cmp(node a,node b){    if(a.w!=b.w)    return a.w<b.w;    else    return a.s>b.s;}int main(){    int i,j,n=0,m;    while(scanf("%d%d",&l[n].w,&l[n].s)!=EOF)    {        l[n].num=n;        n++;    }    sort(l,l+n,cmp);    for(i=0;i<n;i++)    //printf("%d %d %d\n",l[i].w,l[i].s,l[i].num+1);    memset(dp,0,sizeof(dp));    int max1,max2=0,f;    for(i=0;i<n;i++)    {        max1=0;        for(j=i-1;j>=0;j--)        {            if(l[i].w>l[j].w&&l[i].s<l[j].s&&max1<dp[j].sum)            {                max1=dp[j].sum;                dp[i].xx=j;            }        }        if(max1==0)        {            dp[i].sum=1;            dp[i].xx=-1;        }        else        {            dp[i].sum=max1+1;        }        if(dp[i].sum>max2)        {            max2=max1+1;            f=i;        }    }    int aa[1010];    printf("%d\n",max2);    for(i=1;i<=max2;i++)    {        aa[i]=l[f].num+1;        f=dp[f].xx;    }    for(i=max2;i>=1;i--)    {        printf("%d\n",aa[i]);    }    return 0;}


0 0