POJ-1631 Bridging signals

Posted ISGuXing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ-1631 Bridging signals相关的知识,希望对你有一定的参考价值。

题目大意:就是求最长的上升子序列,输出长度。

思路:LIS水题。就是题目描述的特别长。

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<algorithm>
 4 #include<string.h>
 5 using namespace std;
 6 int a[40005];
 7 int dp[40005];
 8 int mx[40005];
 9 int INF=9999999;
10 int main(){
11     int T;
12     cin>>T;
13     while(T--){
14         int n;
15         cin>>n;
16         for(int i=1;i<=n;i++)
17             scanf("%d",&a[i]);
18         for(int i=0;i<=40003;i++)
19             mx[i]=INF;
20         mx[0]=0;
21         int len=0;
22         for(int i=1;i<=n;i++){
23             for(int j=len;j>=0;j--){
24                 if(a[i]>mx[j]){
25                     dp[i]=j+1;
26                     mx[j+1]=min(a[i],mx[j+1]);
27                     break;
28                 }
29             }
30             len=max(len,dp[i]);
31         }
32         cout<<len<<endl;
33     }
34     return 0;
35 }

 

以上是关于POJ-1631 Bridging signals的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1631 Bridging signals

poj1631 Bridging signals

POJ-1631 Bridging signals

poj 1631 Bridging signals

POJ - 1631 Bridging signals(最长上升子序列---LIS)

Bridging signals POJ 1631(最长递增子序列dp)