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;
}

完结撒花

posted @ 2025-09-13 17:03  LiuRuoYu123  阅读(8)  评论(0)    收藏  举报