P1091 90分求调
  • 板块题目总版
  • 楼主All_In_Atom
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/12/14 21:20
  • 上次更新2023/12/15 09:13:13
查看原帖
P1091 90分求调
1042481
All_In_Atom楼主2023/12/14 21:20
#include<bits/stdc++.h>
using namespace std;
int a[10086];
int dp1[10086],dp2[10086];
int main(){
    int n,maxi=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    int maxx=INT_MAX;
    for(int maxi=1;maxi<=n;maxi++){
        int macs=0,max1=0;
        for(int i=1;i<maxi;i++){
            dp1[i]=1;
            for(int j=1;j<i;j++){
                if(a[j]<a[i])dp1[i]=max(dp1[j]+1,dp1[i]);
            }
            macs=max(macs,dp1[i]);
        }
        for(int i=maxi+1;i<=n;i++){
            dp2[i]=1;
            for(int j=maxi+1;j<i;j++){
                if(a[j]>a[i])dp2[i]=max(dp2[j]+1,dp2[i]);
            }
            max1=max(max1,dp2[i]);
        }
        maxx=min((maxi-macs)+((n-maxi)-max1),maxx);
        // cout<<macs<<" "<<max1<<" "<<maxi<<" "<<(n-maxi)<<" ";
        // cout<<(maxi-macs)+((n-maxi)-max1)<<endl;
    }
    cout<<maxx;
    return 0;
}
2023/12/14 21:20
加载中...