码迷,mamicode.com
首页 > 其他好文 > 详细

HDU - 1160 FatMouse's Speed(dp+路径记录)

时间:2017-09-04 16:03:42      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:路径   pre   strong   i++   col   ade   pid   use   struct   

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

题意:给定x组老鼠的重量(W)和速度(S)。求使得   W[m[1]] < W[m[2]] < ... < W[m[n]]       S[m[1]] > S[m[2]] > ... > S[m[n]] 的最长序列长度和路径

题解:排序一下,然后LIS,路径记录一下,输出就可以了

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 const int N=1111;
 6 struct TnT{
 7     int id;
 8     int w,s;
 9 }T[N];
10 
11 bool cmp(TnT a,TnT b){
12     if(a.w<b.w) return 1;
13     else if(a.w==b.w) return a.s>b.s;
14     else return 0;    
15 }
16 
17 int dp[N],pre[N];
18 
19 void print(int x){
20     if(pre[x]!=0) print(pre[x]);
21     cout<<T[x].id<<endl;
22 }
23 
24 int main(){
25     int n=1,ans=0,en;
26     while(cin>>T[n].w>>T[n].s&&T[n].w){
27         T[n].id=n;
28         n++;
29     }    
30     sort(T+1,T+n,cmp);
31     
32     for(int i=1;i<=n;i++){
33         dp[i]=1;
34         for(int j=1;j<i;j++){
35             if(T[i].w>T[j].w&&T[i].s<T[j].s&&dp[j]+1>dp[i]){
36                 dp[i]=dp[j]+1;
37                 pre[i]=j;
38             }
39         }
40         if(ans<dp[i]) {ans=dp[i];en=i;}
41     }
42     cout<<ans<<endl;
43     print(en);
44     return 0;
45 }

 

 

HDU - 1160 FatMouse's Speed(dp+路径记录)

标签:路径   pre   strong   i++   col   ade   pid   use   struct   

原文地址:http://www.cnblogs.com/Leonard-/p/7473823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!