2 条题解
-
1
#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
怪基盗德
#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
- 上传者