题解 | 合唱队

import sys
   
raw_input = []
for i,line in enumerate(sys.stdin):
    raw_input.append(line.strip())
    if i == 2:
        break

num = int(raw_input[0])
heights = [int(h) for h in raw_input[1].split(' ')]
in_lst = []
de_lst = []
length = len(heights)
for i, h in enumerate(heights):
    in_lst.append(max([in_lst[j] + 1 if heights[i] > heights[j] else 1 for j in range(i)] + [1]))
rev_heights = heights[::-1]
for i, h in enumerate(rev_heights):
    de_lst.append(max([de_lst[j] + 1 if rev_heights[i] > rev_heights[j] else 1 for j in range(i)] + [1]))

# print(in_lst)
# print(de_lst[::-1])
print(num - max([i + d for i, d in zip(in_lst, de_lst[::-1])]) + 1)
  1. 使用in_lst[i]记录已heights[i]结尾的最长升序序列
  2. 使用de_lst[i]记录以rev_heights[i]结尾的最长升序序列
  3. in_lst与反转后的de_lst相加, 即位以该元素为峰值的合唱队序列
全部评论

相关推荐

我的第一次面试🥺,和专业完全不搭噶但是不想从事专业的实习,结果自己还没学会就去面试了🤣1.自我介绍2.hr介绍公司概况3.问玩没玩过宾果消消乐回答今天刚下载接触不深4.平常玩什么游戏多回答市面上热门的休闲游戏,开心消消乐,沙威马传奇等5.问测试的种类有?新手有点手忙脚乱,我说有黑盒白盒灰盒测试,然后白盒有单元测试,黑盒主要是功能测试和自动化测试,6.压力测试和性能测试了解吗?回答正在学习(但是没学过)7.可以说一下学到哪里了吗?(挖坑给自己跳了)说了压力测试是测试系统的压力(其实根本不会不知道)8.测试用例的编写方法?判定表法,正交表法,因果图法,边界值法(剩下我忘了)9.说一下判定表法是怎么执行的?(依旧是不太会)有条件桩和动作桩,动作桩是判断用户可能的动作,根据动作桩在相应条件,打勾?(我不太熟只做过笔试题,还是现学的)10.消消乐新增一个颜色棋子,请设计测试用例(我是哑巴)磕磕巴巴说不出来11.消消乐新增一个能够消除同种颜色的棋子,请设计测试用例(我是哑巴)说了一堆磕磕巴巴的没记住12.还有什么特别的测试点吗?想了几个,但是好像没什么用,不太特别13.逻辑题:两根不均匀绳子,都是60分钟烧完,怎么能计时15分钟?我没想出来,嗯嗯了半天,连长度除以时间算速度都想到了,最后hr给了个提示,可以两头同时烧,我顿悟,迅速说出了答案14.还有什么要问的?我问工作中不会的可以问前辈吗,回答是可以其他的忘记了,11上午11点,面了40分钟,下午收到面试未通过的信息。这样一串看起来非常糟糕的面试啊,不通过也是理所当然,不过我实在想去公司学习,各位前辈有什么建议吗?
查看13道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务