1. 程式人生 > >POJ-1631 Bridging signals

POJ-1631 Bridging signals

int -1 pan 序列 max pac 思路 bre algo

題目大意:就是求最長的上升子序列,輸出長度。

思路: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