HDU 1160 FatMouse's Speed .

来源:互联网 发布:求质数 c语言 编辑:程序博客网 时间:2024/05/08 06:38

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1160

先对体重升序排序,然后求s的最长下降子序列

#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <vector>using namespace std;const int maxn=10000+5;struct Mice{int w,s,idx;bool operator < (const Mice& m) const {return w<m.w;}}mice[maxn];int d[maxn],p[maxn];int main(){int w,s,n=1;while(scanf("%d%d",&w,&s)!=EOF)mice[n++]=Mice{w,s,n-1};sort(mice+1,mice+n);int MaxP,Max;for(int i=1;i<n;i++){d[i]=1;for(int j=1;j<i;j++){if(mice[i].w>mice[j].w&&mice[i].s<mice[j].s){if(d[i]<d[j]+1){d[i]=d[j]+1;p[i]=j;}}}if(Max<d[i]){Max=d[i];MaxP=i;}}cout<<Max<<endl;vector<int> ans; ans.reserve(maxn);for(int i=MaxP;i!=0;i=p[i])ans.push_back(mice[i].idx);for(int i=ans.size()-1;i>=0;i--)cout<<ans[i]<<endl;return 0;}


0 0