题解 | #拦截导弹#
拦截导弹
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))