题解 | #合唱队#
合唱队
https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool cmp(int a,int b){ return a>b; } int main() { int n; cin>> n; vector<int>a(n+1,0); for(int i=1;i<=n;i++){ cin>> a[i]; } vector<vector<int>>vec(n+1,vector<int>(2,1)); for(int i=1;i<=n;i++){ for(int left=1;left<=i;left++){ if(a[left]<a[i])vec[i][0]=max(vec[i][0],vec[left][0]+1); } } for(int i=n;i>=1;i--){ for(int right=n;right>=i;right--){ if(a[right]<a[i]){ vec[i][1]=max(vec[i][1],vec[right][1]+1); } } } vector<int>res(n+1,0); for(int i=1;i<=n;i++){ if(vec[i][0]!=0&&vec[i][1]!=0){ res[i]=vec[i][0]+vec[i][1]-1; } } sort(res.begin(),res.end(),cmp); cout<<n-res[0]<<endl; return 0; } // 64 位输出请用 printf("%lld")