题解 | #合唱队#

合唱队

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)


全部评论

相关推荐

鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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