(元素1递增元素2递降的最长子序列)

题意:找到体重递增速度递降的最长序列

分析:和最长递增子序列一样,不过这里先做处理:先把体重按递增排序,,然后找最长递降子序列即可

代码:

#include<iostream>#include<algorithm>#include<cstdio>using namespace std;struct node{int w,s;int t;}a[2000];int n,i;struct h{int x;int pre;}dp[2000];int ans[2000],g;bool cmp(node p,node q){if(p.w!=q.w) return p.w<q.w;return p.s>q.s;}int max(int p,int q){return p>q?p:q;}void prin(int index){int j=index;if(dp[j].pre!=j){prin(dp[j].pre);cout<<a[j].t<<endl;}else cout<<a[j].t<<endl;return;}int main(){i=0,g=0;int mx=-1,index;while(cin>>a[i].w>>a[i].s) i++;for(int j=0;j<i;j++){a[j].t=j+1;}sort(a,a+i,cmp);for(int j=0;j<i;j++){dp[j].x=1;dp[j].pre=j;}for(int j=0;j<i;j++){for(int k=0;k<j;k++){if(a[k].s>a[j].s&&a[k].w!=a[j].w){if(dp[j].x<dp[k].x+1){dp[j].x=dp[k].x+1;dp[j].pre=k;}}if(mx<dp[j].x){mx=dp[j].x;index=j;}}}cout<<mx<<endl;prin(index);}

一个人的期望值越大,心理承受力就会越小,就越经受不住失败的打击,

(元素1递增元素2递降的最长子序列)

相关文章:

你感兴趣的文章:

标签云: