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] >
双向队列