题解 | #合唱队#

合唱队

https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4

# 计算每个人左边比他矮的人数,最小值是1
def f(ls):
    dp = [1]*len(ls)
    for i in range(len(ls)):
        for j in range(i+1):
            if ls[j] < ls[i]:
                dp[i] = max(dp[i],dp[j]+1)
    return dp
    
N = int(input())
ls = list(map(int,input().split()))
dp1 = f(ls)
dp2 = f(ls[::-1])[::-1]
ld = []
for i in range(len(ls)):
    ld.append(dp1[i]+dp2[i])
m = max(ld)-1
print(N-m)


全部评论

相关推荐

09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务