题解 | 合唱队

合唱队

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

import sys

# 最长上升子序列,容易超时,所有操作放一个函数尽可能循环做完处理
def f(n,nums):
    nums_re=nums[::-1]
    dp=[1]*n
    dpb=[1]*n
    ans=1
    for i in range(n):
        for j in range(i):
            if nums[j]<nums[i]:
                dp[i]=max(dp[i],dp[j]+1)
            if nums_re[j]<nums_re[i]:
                dpb[i]=max(dpb[i],dpb[j]+1)
    for i in range(n):
       ans=max(ans,dp[i]+dpb[-i-1]-1) 
    return n-ans

n=int(sys.stdin.readline().strip())
nums=list(map(int,sys.stdin.readline().strip().split()))
print(f(n,nums))

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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