题解 | #拦截导弹#

拦截导弹

http://www.nowcoder.com/practice/218f3db1f66d465bbf9578625aa90785

Q1:很明确就是最长递减子序列的长度

Q2:根据Dilworth定理:最少的下降序列个数就等于整个序列最长上升子序列的长度

n=eval(input())
heights=list(map(int,input().split()))
dp=[1]*n # Q1:最长递减子序列
dp2=[1]*n # Dilworth定理:最少的下降序列个数就等于整个序列最长上升子序列的长度
for i in range(1,n):
    for j in range(0,i):
        if heights[i]<=heights[j]:
            dp[i]=max(dp[j]+1,dp[i])
        else:
            dp2[i]=max(dp2[j]+1,dp2[i])
print(max(dp))
print(max(dp2))
全部评论

相关推荐

一表renzha:不是你说是南通我都没往那方面想,人家真是想表达那个意思吗?
点赞 评论 收藏
分享
zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
评论
10
3
分享

创作者周榜

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