zoj1108&&hdu1160 FatMouses's speed(dp)

来源:互联网 发布:如何强身健体知乎 编辑:程序博客网 时间:2024/06/05 12:39

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<stack>#define N 1005using namespace std;typedef struct {    int w,s,num;}MICE;MICE mice[N];stack <int > S;int cmp(MICE a,MICE b){    if(a.w!=b.w)        return a.w<b.w;     else         return a.s>b.s;}int ind[N];int main(){    //freopen("test.txt","r",stdin);    int i,j;    int n=0,len[N];    while(cin>>mice[n].w>>mice[n].s){        mice[n].num=n;        n++;    }    sort(mice,mice+n,cmp);    memset(len,0,sizeof(len));    memset(ind,0,sizeof(ind));    len[0]=1;    for(i=1;i<n;i++){        int sum=0,temp=0;        for(j=0;j<i;j++)            if(len[j]>sum&&mice[j].w<mice[i].w&&mice[j].s>mice[i].s)            {   sum=len[j];                temp=j;            }        if(sum!=0)              ind[i]=temp;        else            ind[i]=0;        sum++;        len[i]=sum;    }    int max1=0;int tempi;    for(i=0;i<n;i++){        if(len[i]>max1) max1=len[tempi=i];    }    cout<<max1<<endl;    i=tempi;    while(ind[i]!=0){        S.push(mice[i].num+1);        i=ind[i];    }    S.push(mice[i].num+1);    while(!S.empty()){        cout<<S.top()<<endl;        S.pop();    }    return 0;}
原创粉丝点击