#include<iostream> usingnamespace std; constint N = 1010; int n; int a[N]; int f[N],g[N]; intmain(){ cin >> n; for (int i = 1;i <= n;i++) cin >> a[i]; for (int i = 1;i <= n;i++) { f[i] = 1; for (int j = 1;j < i;j++) { if (a[j] < a[i]) f[i] = max (f[i],f[j] + 1); } } for (int i = n;i >= 1;i--) { g[i] = 1; for (int j = n;j > i;j--) { if (a[i] > a[j]) g[i] = max (g[i],g[j] + 1); } } int ans = 0; for (int i = 1;i <= n;i++) ans = max (ans,f[i] + g[i] - 1); cout << ans << endl; return0; }
#include<iostream> usingnamespace std; constint N = 1010; int n; int a[N]; int f[N],g[N]; intmain(){ cin >> n; for (int i = 1;i <= n;i++) cin >> a[i]; for (int i = 1;i <= n;i++) { f[i] = 1; for (int j = 1;j < i;j++) { if (a[j] < a[i]) f[i] = max (f[i],f[j] + 1); } } for (int i = n;i >= 1;i--) { g[i] = 1; for (int j = n;j > i;j--) { if (a[i] > a[j]) g[i] = max (g[i],g[j] + 1); } } int ans = 0; for (int i = 1;i <= n;i++) ans = max (ans,f[i] + g[i] - 1); cout << n - ans << '\n'; //注意是n-ans return0; }
#include<bits/stdc++.h> usingnamespace std; constint N = 1010; int n; int a[N]; int f[N]; intmain(){ cin >> n; for (int i = 1;i <= n;i++) cin >> a[i]; int ans = 0; for (int i = 1;i <= n;i++) { f[i] = a[i]; for (int j = 1;j < i;j++) { if (a[j] < a[i]) f[i] = max (f[i],f[j] + a[i]); } ans = max (ans,f[i]); } cout << ans << '\n'; return0; }
#include<iostream> #include<algorithm> usingnamespace std; constint N = 1010; int n = 0; int a[N],f[N]; intmain(){ while (cin >> a[n + 1]) n++; int ans = 0; for (int i = 1;i <= n;i++) { f[i] = 1; for (int j = 1;j < i;j++) { if (a[j] >= a[i]) f[i] = max (f[i],f[j]+1); } ans = max (ans,f[i]); } cout << ans <<'\n'; ans = 0; for (int i = 1;i <= n;i++) { f[i] = 1; for (int j = 1;j < i;j++) { if (a[j] < a[i]) f[i] = max (f[i],f[j]+1); } ans = max (ans,f[i]); } cout << ans <<'\n' ; return0; }
#include<bits/stdc++.h> usingnamespace std; constint N = 3010; int n; int a[N],b[N]; int f[N][N]; intmain(){ cin >> n; for (int i = 1;i <= n;i++) cin >> a[i]; for (int i = 1;i <= n;i++) cin >> b[i]; for (int i = 1;i <= n;i++) { for (int j = 1;j <= n;j++) { f[i][j] = f[i - 1][j]; if (a[i] == b[j]) { f[i][j] = max (f[i - 1][j],1); for (int k = 1;k <= j - 1;k++) { if (b[k] < a[i]) f[i][j] = max (f[i][j],f[i][k] + 1); } } } } int ans = 0; for (int i = 1;i <= n;i++) ans = max (ans,f[n][i]); cout << ans << '\n'; return0; }
#include<iostream> usingnamespace std; constint N = 3010; int n; int a[N],b[N]; int f[N][N]; intmain(){ cin >> n; for (int i = 1;i <= n;i++) cin >> a[i]; for (int i = 1;i <= n;i++) cin >> b[i]; for (int i = 1;i <= n;i++) { int maxv = 1; for (int j = 1;j <= n;j++) { f[i][j] = max (f[i][j],f[i - 1][j]); if (a[i] == b[j]) f[i][j] = max (f[i][j],maxv); if (b[j] < a[i]) maxv = max (maxv,f[i - 1][j] + 1); } } int ans = 0; for (int i = 1;i <= n;i++) ans = max (ans,f[n][i]); cout << ans <<'\n'; return0; }