合唱队形 题解(求赞)
2024-02-26 21:19:59
发布于:四川
17阅读
0回复
0点赞
dp
#include<bits/stdc++.h>
using namespace std;
int dp[1005],a[1005],dp2[1005];
int main(){
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[i]>a[j]){
if(dp[i]<dp[j]+1){
dp[i]=dp[j]+1;
}
}
}
}
for(int i=n;i>=1;i--){
dp2[i]=1;
for(int j=n;j>i;j--){
if(a[i]>a[j]){
if(dp2[i]<dp2[j]+1){
dp2[i]=dp2[j]+1;
}
}
}
}
int s=0;
for(int i=2;i<=n;i++){
s=max(s,dp[i]+dp2[i]-1);
}
cout<<n-s<<endl;
return 0;
}
这里空空如也
有帮助,赞一个