题解 | #合唱队#

合唱队

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)
'''

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:22
怎么这么多逆天求职者,救救我救救我救救我😭
flmz_Kk:哈哈哈哈哈哈,这么多求职者,肯定有那一两个逆天的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 16:15
我应届生,去年10月份开始在这家公司实习,到今年10月份正好一年想(实习+试用期),在想要不要提前9月份就离职,这样好找工作些,但又差一个月满一年,又怕10月份国庆回来离职,容易错过了下半年的金九银十,到年底容易gap到年后
小破站_程序员YT:说这家公司不好吧,你干了快一年 说这家公司好吧,你刚毕业就想跑路说你不懂行情吧,你怕错过金九银十说 你懂行情吧,校招阶段在实习,毕业社招想换工作 哥们,我该怎么劝你留下来呢
应届生,你找到工作了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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