怪盗基德的滑翔翼
1 #include<iostream>
2 #include<cstdio>
3 using namespace std;
4 const int N=105;
5
6 int a[N],b[N],c[N];
7 int main(){
8 int t,n,maxx;
9 cin>>t;
10 while(t--){
11 cin>>n;
12 maxx=0;
13 for(int i=1;i<=n;i++)scanf("%d",&a[i]);
14 //上升子序列
15 for(int i=1;i<=n;i++){
16 b[i]=1;
17 for(int j=1;j<i;j++)
18 if(a[i]<a[j])b[i]=max(b[i],b[j]+1);
19 maxx=max(maxx,b[i]);
20 }
21 //上升子序列
22 for(int i=n;i>0;i--){
23 c[i]=1;
24 for(int j=i+1;j<=n;j++)
25 if(a[i]<a[j])c[i]=max(c[i],c[j]+1);
26 maxx=max(maxx,c[i]);
27 }
28 cout<<maxx<<endl;
29 }
30 return 0;
31 }