FatMouse's Speed

来源:互联网 发布:js获取焦点和失去焦点 编辑:程序博客网 时间:2024/05/19 00:36

很水的一个题目,题目意思很简单。思路,先按,体重或者速度排序,然后对速度或者体重的序列,求最大递增或递减序列。代码仅仅是实现了思路而已,很长恨挫!

点击打开链接               http://acm.hdu.edu.cn/showproblem.php?pid=1160

#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;struct node{int num;int w,s;}a[1005];int x,y,k,t[1005],r[1005];int cmp(node c,node d) {return c.w<d.w;}int Max(int x,int y) {return x>y?x:y;}int main (){//freopen("f.txt","r",stdin);int i,j,L,p=0,ant=1,er=1;k=0;memset(t,0,sizeof(t));while(cin>>x>>y){a[k].num=k+1;a[k].w=x;a[k].s=y;k++;}sort(a,a+k,cmp);for(i=0;i<k;i++) t[i]=1;for(i=1;i<k;i++){for(j=0;j<i;j++){if(a[j].s>a[i].s && a[j].w<a[i].w && t[i]<t[j]+1) t[i]+=1;}}for(i=0;i<k;i++) p=Max(p,t[i]);cout<<p<<endl;for(i=0;i<k;i++){if(p==t[i]) j=i;}int temp=j;r[er++]=a[j].num;for(L=j-1;L>=1;L--){if(t[L]+1==t[j] && a[L].s>a[temp].s){ant++;r[er++]=a[L].num;t[j]=t[L];temp=L;}if(ant==p) break;}for(i=er-1;i>0;i--) cout<<r[i]<<endl;return 0;}


 

原创粉丝点击