题解 | 拦截导弹
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定理:最少的下降序列个数就等于整个序列最长上升子序列的长度
