题解 | #合唱队#双向DP_超时

合唱队

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

import sys

n = int(input().strip())

h = list(map(int, input().strip().split()))

dpl = [1] * n

dpr = [1] * n

for i in range(n):

    for j in range(i):

        if h[i] > h[j]:

            dpl[i] = max(dpl[i], dpl[j]+1)

ret = n

for i in range(n-1, -1, -1):

    for j in range(n-1, i, -1):

        if h[i] > h[j]:

            dpr[i] = max(dpr[i], dpr[j]+1)

    ret = min(ret, n - (dpl[i]+dpr[i]-1))

# for i in range(n):

#     ret = min(ret, n - (dpl[i]+dpr[i]-1))

print(ret)

全部评论

相关推荐

点赞 评论 收藏
分享
04-14 20:10
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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