题目
有n个无盖酒桶,每个酒桶可以近似看做是一个圆柱体。它们的尺寸不一定相同,我们可以用它们的半径r和高h来描述每个桶的大小。对于两个不一样的酒桶A和酒桶B,如果酒桶A的半径和高度都大于酒桶B,我们认为酒桶A可以套在酒桶B上。同理,若酒桶C的半径和高度都大于酒桶A,酒桶C就可以套在酒桶A和酒桶B的组合体上。现在请你求出最多可以套多少个酒桶
实质上是一个最大上升子序列问题
将酒桶先按高度排列(可能给出的数据已经排列好)
在按半径求最大的上升子序列
python代码
#最大公共子序列问题
def a(F):
return F[0]
if __name__ =="__main__":
L=[]
n=int(input())
for i in range(n):
temp=list(map(int,input().split()))
L.append(temp)
L.sort(key=a)
fnal=[]
maxlen=[]
for i in L:
fnal.append(i[1])
maxlen.append(1)
#print(final)
for i in range(1,len(fnal)):
for j in range(i):
if fnal[i]>fnal[j]:
maxlen[i]=max(maxlen[i],maxlen[j]+1)
v=max(maxlen)
print(v)