题解 | #合唱队#

合唱队

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


'''解析:
n位同学顺序不可改变,要抽出最小人数,使剩余人的身高符合 ^ / \ 三种走势之一(严格升序/降序)。
将每位同学i作为最高点,依次找出抽出人数,其中的最小值即为结果。
需要抽出的人数f(n) 计算方法:
    同学i左面 符合严格升序的最多人数 l(i)
    同学i右面 符合严格降序的最多人数 r(i)
    同学i自己
队伍长度=l(i)+r(i)+1
需抽出的人数f(n)=n-(l(i)+r(i)+1)
'''

n=int(input())
h=list(map(int,input().split()))
#print(h)
l=[0]*n   # 0*n列表,用于记录i左面有几个人
for i in range(n):
    for j in range(i):   # 不包括i
        if h[i]>h[j] and l[j]+1>l[i]:
            l[i] += 1
#print(l)

r=[0]*n   # 0*n列表,用于记录i右面有几个人
for i in range(n-1,-1,-1):  # 从右往左
    for j in range(n-1,i,-1):
        if h[i]>h[j] and r[j]+1>r[i]: 
            r[i] += 1
#print(r)

chorus=[l[i]+r[i]+1 for i in range(n)]
#print(chorus)
out=[n-chorus[i] for i in range(n)]
print(min(out))
'''

l=list(range(8-1,-1,-1))
print(l)
'''

全部评论

相关推荐

10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务