题解 | #合唱队#

合唱队

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

num = int(input())
l = list(map(int, input().split()))
def duilie(l,num):
    dp = [1 for i in range(num)]
    for i in range(num):
        for j in range(i):
            if l[i] > l[j]:
                dp[i] = max(dp[j]+1, dp[i])
    return dp
ll = duilie(l,num)
lll = l[::-1]
lll = duilie(lll,num)
lll = lll[::-1]
a = []
for i in range(num):
    a.append(lll[i]+ll[i]-1)
print(num - max(a))

dp【i】:以第i个数位结尾的增长队列的长度,

将队列正向和逆向都做一遍,然后加和-1就是合唱队列的长度,

选出最大的,然后用队列总长度一减,那么就是最少出列人数。

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-03 21:58
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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