1 solutions

  • 1
    @ 2025-4-20 21:05:31
    #include <bits/stdc++.h>
    using namespace std;
    int a[1001],dpa[1001],n,dpb[1001],ans1,ans2,ans,k;
    int main(){
    	scanf("%d",&k);
    	while(k--){
    		ans1 = 0;
    		memset(dpa,0,sizeof(dpa));
    		memset(dpb,0,sizeof(dpb));
    		ans2 = 0;
    		scanf("%d",&n);
    		for(int i = 1;i<=n;i++)scanf("%d",&a[i]);
    		for(int i = 1;i<=n;i++){
    			dpa[i] = 1;
    			for(int j = 1;j<i;j++)
    				if(a[j]<a[i])dpa[i] = max(dpa[j]+1,dpa[i]);
    			ans1 = max(ans1,dpa[i]);
    		}
    		for(int i = n;i>0;i--){
    			dpb[i] = 1;
    			for(int j = n;j>i;j--)
    				if(a[j]<a[i])dpb[i] = max(dpb[j]+1,dpb[i]);
    			ans2 = max(ans2,dpb[i]);
    		}
    		ans = max(ans1,ans2);
    		printf("%d\n",ans);
    	}
    	return 0;
    }
    
    • 1

    Information

    ID
    747
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    10
    Tags
    (None)
    # Submissions
    6
    Accepted
    2
    Uploaded By