您的位置:首页 > 其它

FatMouse's Speed

2015-08-20 23:24 351 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1160

#include<iostream>

#include<cstdio>

#include<cstring>

#include<algorithm>

using namespace std;

struct Mice

{
int m,v,num;

}mice[1010];

int pre[1010];

int dp[1010],res[1010];

bool cmp(Mice a,Mice b)

{
if(a.m<b.m)
return 1;
else if(a.m==b.m && a.v>b.v)
return 1;
else 
return 0;

}

int main()

{

int i=1,j;

// freopen("C:\\Users\\John\\Desktop\\hi.txt","r",stdin);
while(scanf("%d%d",&mice[i].m,&mice[i].v)!=EOF)
{
dp[i]=1;
pre[i]=0;
mice[i].num=i;
i++;
}
int n=i-1;
sort(mice+1,mice+1+n,cmp);
int maxlen=0;
int maxi;
dp[1]=1;
for(i=1;i<=n;i++)
{
for(j=1;j<i;j++)
if(mice[i].m>mice[j].m && mice[i].v<mice[j].v && dp[j]+1>dp[i])
{
dp[i]=dp[j]+1;
pre[i]=j;
if(dp[i]>maxlen)
{
maxi=i;
maxlen=dp[i];
}
}
}
int t=maxi;
i=0;
while(t!=0)
{
res[i++]=t;
t=pre[t];
}
cout<<i<<endl;;
while(i>0)
{
i--;
cout<<mice[res[i]].num
<<endl;
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: