2 solutions
-
1
AC呆马:
#include<bits/stdc++.h> using namespace std; const int maxn = 1e3 + 5; int h[maxn],f[maxn],g[maxn], ans = -1, n; int main() { cin >> n; for(int i = 1; i <= n; i++) cin >> h[i]; f[1] = 1; g[n] = 1; for(int i = 2; i <= n; i++) { f[i] = 1; for(int j = 1; j < i; j++) { if(h[j] < h[i]) f[i] = max(f[i], f[j] + 1); } } for(int i = n - 1; i >= 1; i--) { g[i] = 1; for(int j = n; j > i; j--) { if(h[j] < h[i]) g[i] = max(g[i], g[j] + 1); } } for(int i = 1; i <= n; i++) ans = max(f[i] + g[i] - 1, ans); cout << n - ans; return 0; }
需要自取,留个赞谢谢!!
-
0
#include <iostream> using namespace std; int n,ans=-1; int t[114514]; int dp1[114514],dp2[114514]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]; } dp1[1]=1; dp2[n]=1; for(int i=2;i<=n;i++) { dp1[i]=1; for(int j=1;j<i;j++) { if(t[j]<t[i]) { dp1[i]=max(dp1[i],dp1[j]+1); } } } for(int i=n-1;i>=1;i--) { dp2[i]=1; for(int j=n;j>i;j--) { if(t[j]<t[i]) { dp2[i]=max(dp2[i],dp2[j]+1); } } } for(int i=1;i<=n;i++) { ans=max(ans,dp1[i]+dp2[i]-1); } cout<<n-ans; return 0; }
- 1
Information
- ID
- 749
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 105
- Accepted
- 44
- Uploaded By