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;
    }
    
    • 1
      @ 2023-10-1 19:45:53

      怪基盗德

      #include<iostream>
      using namespace std;
      #include<vector>
      #include<algorithm>
      #include<string.h>
      #include<string>
      #include<unordered_map>
      #include<math.h>
      #include<queue>
      #include<stack>
      
      const int N = 1010;
      int f[N], h[N], d[N];
      
      int main()
      {
      	int n,m;
      	cin >> m;
      	while (m--)
      	{
      		cin >> n;
      		for (int i = 0; i < n; i++)
      			cin >> h[i];
      		f[0] = 1;
      		d[0] = 1;
      		int res = 0;
      		for (int i = 1; i < n; i++)
      		{
      			f[i] = 1;
      			for (int j = i - 1; j >= 0; j--)
      			{
      				if (h[i] > h[j])
      				{
      					f[i] = max(f[i], f[j] + 1);
      					
      				}
      				
      			}
      			res = max(res, f[i]);
      		}
      		for (int i = n - 1; i >= 0; i--)
      		{
      			d[i] = 1;
      			for (int j = i + 1; j < n; j++)
      			{
      				if (h[i] > h[j])
      				{
      					d[i] = max(d[i], d[j] + 1);
      					
      				}
      			}
      			res = max(res, d[i]);
      		}
      		cout << res << endl;
      	}
      		
      	return 0;
      }
      
      
      • 1

      信息

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