题解 | 拦截导弹

import sys
n = int(input())
a = list(map(int, input().split()))
b = a.copy()

redp = [1 for i in range(n)]
dp2  =[1 for i in range(n)]
for i in range(n - 2, -1, -1):
    # redp[i] = redp[i + 1]
    for j in range(i + 1, n):
        if a[i] >= a[j]:
            redp[i] = max(redp[i], redp[j] + 1)

for i in range(1, n):
    for j in range(i):
        if a[i] > a[j]:
            dp2[i] = max(dp2[i], dp2[j] + 1)

print(max(redp))
print(max(dp2))

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-21 17:59
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-21 13:41
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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