①、枚举每个位置左右侧分别所能站的做多人
自左向右递增:求每个位置左边最多可站多少人(含自己)— dp1
自右向左递增:求每个位置右边最多可站多少人(含自己)— dp2
②、选择第 i 个位置不移动的情况下,合唱队所能站的人数:dp1[i]+dp2[i]-1
合唱队最多人:Max_ = dp1[i]+dp2[i]-1
③、组成合唱队移除最少人:n - Max_
#includeusing namespace std; int main() { int n, arr[3000], dp1[3000], dp2[3000]; cin>>n; for(int i=0; i cin>>arr[i]; dp1[i] = 1; for(int j=0; j if(arr[i]>arr[j]) dp1[i] = max(dp1[i], dp1[j]+1); } } for(int i=n-1; i>=0; i--) { dp2[i] = 1; for(int j=n-1; j>=i; j--) { if(arr[i]>arr[j]) dp2[i] = max(dp2[i], dp2[j]+1); } } int Max_ = 0; for(int i=0; i Max_ = max(dp1[i]+dp2[i]-1, Max_); } cout<



