题解 | #合唱队#
合唱队
https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4
n = int(input())
arr = str(input())
arr = arr.split(' ')
arr = [int(x) for x in arr]
def fectch_up_list(arr):
dp = [ 1 for i in range(n)] # 最少就是自身了吧
sa = [ i for i in sorted(enumerate(arr), key = lambda x:x[1])]
# print(sa)
# i 表示采用i时,最多具有多少数量
for i in range(0, n):
id = sa[i][0]
# if i > 0 and sa[i][1] == sa[i-1][1] and id > sa[i-1][0]:
# dp[id] = dp[sa[i-1][0]]
# continue
# j 表示到当前j为止,最多具有多少数量
for j in range(0, i):
# if
idj = sa[j][0]
if idj < id and sa[i][1] > sa[j][1]:
dp[id] = max(dp[id], dp[idj]+1)
return dp
dp1 = fectch_up_list(arr)
dp2 = fectch_up_list(list(reversed(arr)))
dp2 = list(reversed(dp2))
dp = []
for i in range(n):
dp.append(dp1[i] + dp2[i])
# print(dp1, dp2, dp)
mx = max(dp[1:-1]) -1
ans = n - mx
print(ans)
# for i in range(1, n-1):
# if dp[i] == mx:
# if arr[i] >
双向队列
