2 条题解

  • 1
    @ 2026-4-26 19:49:13
    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e2 + 10;
    const int mod = 1e9 + 7;
    const int INF = 0x3f3f3f3f;
    const long long LLINF = 0x3f3f3f3f3f3f3f3fLL;
    int a[N], dp[N];
    int main(){
    	int t;
    	cin >> t;
    	while(t--){
    		int n;
    		cin >> n;
    		for(int i = 1 ; i <= n ; i++){
    			cin >> a[i];
    		}
    		for(int i = 1 ; i <= n ; i++){
    			dp[i] = 1;
    			for(int j = 1 ; j < i ; j++){
    				if(a[j] > a[i]) dp[i] = max(dp[i], dp[j] + 1);
    			}
    		}
    		int maxx = -1;
    		for(int i = 1 ; i <= n ; i++){
    			maxx = max(maxx, dp[i]);
    		}
    		for(int i = 1 ; i <= n ; i++){
    			dp[i] = 1;
    			for(int j = 1 ; j < i ; j++){
    				if(a[j] < a[i]) dp[i] = max(dp[i], dp[j] + 1);
    			}
    		}
    		for(int i = 1 ; i <= n ; i++){
    			maxx = max(maxx, dp[i]);
    		}
    		cout << maxx << endl;
    	}
    	return 0;
    }
    

    信息

    ID
    2964
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    161
    已通过
    31
    上传者