倒卖战利品
Posted 炫云云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了倒卖战利品相关的知识,希望对你有一定的参考价值。
倒卖战利品
在游戏中,击败魔物后,薯队长获得了N件宝物,接下来得把这些宝物卖给宝物回收员来赚点小钱。这个回收员有个坏毛病,每次卖给他一件宝 物后,之后他就看不上比这件宝物差的宝物了。在这个世界中,衡量宝物的好坏有两个维度,稀有度X和实用度H,回收员在回收一个宝物A 后,下一个宝物的稀有度和实用度都不能低于宝物A。那么薯队长如何制定售卖顺序,才能卖给回收员宝物总个数最多。
输入描述:
第一行一个正整数N。 接下来N行。每行两个整数分别表示X 和 H X1 H1 X2 H2 … XN HN
输入限制: 对于70%的数据:
0<N<10^4
0<Xi<10^6
0<Hi<10^6
100%的数据:
0<N<10^6
0<Xi<10^6
0<Hi<10^6
输出描述:
一个整数,表示最多可以卖出的宝物数
输入例子1:
4
3 2
1 1
1 3
1 2
输出例子1:
3
if __name__ == '__main__':
n = int(input())
score = []
for i in range(n):
score.append(list(map(int, input().split())))
score.sort()
nums = []
for i in range(n):
nums.append(score[i][1])
stack = [nums[0]]
for i in range(1,n):
if nums[i] >= stack[-1]:
stack.append(nums[i])
else:
left,right = 0,len(stack)
while left<right:
mid = (left+right)//2
if stack[mid] >= nums[i]:
right = mid
else:
left = mid + 1
stack[left] = nums[i]
print(len(stack))
以上是关于倒卖战利品的主要内容,如果未能解决你的问题,请参考以下文章