P1097 合唱队形
题目
做法:dp
代码:
#include <bits/stdc++.h>
using namespace std;
int n,ans=-1;
int s[1007];
int a[1007];
int b[1007];
int main(){
cin >> n;
for(int i=1;i<=n;i++){
cin >> s[i];
}
for(int i=1;i<=n;i++){
for(int j=0;j<i;j++){
if(s[j]<s[i]){
a[i] = max(a[i],a[j]+1);
}
}
}
for(int i=n;i>0;i--){
for(int j=n+1;j>i;j--){
if(s[j]<s[i]){
b[i]=max(b[i],b[j]+1);
}
}
for(int i=1;i<=n;i++){
ans=max(a[i]+b[i]-1,ans);
}
}
cout << n-ans;
return 0;
}

浙公网安备 33010602011771号