90分求助
查看原帖
90分求助
692647
tanghg楼主2022/8/8 18:31

rt,第9个点过不去,答案76输出75

#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <stack>
using namespace std;
typedef long long ll;
const ll MAXN=3000+5;
ll dp[MAXN],n,a[MAXN];
ll shang_sheng(ll e) {
    if(e==0){
        return 0;
    }
    for (int i = 0; i <=n ; ++i) {
        dp[i]=0;
    }
    ll ans = -1;
    for (int i = 1; i <= e; i++) {
        dp[i] = 1;
        for (int j = 1; j < i; j++) {
            if (a[j] < a[i]) {
                dp[i] = max(dp[i], dp[j] + 1);
            }
        }
        ans = max(ans, dp[i]);
    }
    return ans;
}
ll xia_jiang(ll s){
    if(s==n){
        return 0;
    }
    for (int i = 0; i <=n ; ++i) {
        dp[i]=0;
    }
    ll Ans=1;
    dp[s]=a[s];
    for(ll i=s;i<=n;++i){
        if(dp[Ans]>a[i]){
            Ans++;
            dp[Ans]=a[i];
        }else{
            for (int j = 1; true ; ++j) {
                if(dp[j]<a[i]){
                    dp[j]=a[i];
                    break;
                }
            }
        }
    }
    return Ans;
}
int main(){
    cin>>n;
    for (int i = 1; i <=n ; ++i) {
        cin>>a[i];
    }
    ll ans=0;
    for (int i = 1; i <=n ; ++i) {
        ll l= shang_sheng(i-1),r= xia_jiang(i+1);
        ans= max(l+r,ans);
    }
    cout<<n-ans;
    return 0;
}
2022/8/8 18:31
加载中...