from functools import cmp_to_key class Solution(object):     def maxEnvelopes(self, envs):         def liss(envs):             def lmip(envs, tails, k):                 b, e = 0, len(tails) - 1                 while b <= e:                     m = (b + e) >> 1                     if envs[tails[m]][1] > k[1]:                         e = m - 1                     else:                         b = m + 1                 return b             tails = []             for i, env in enumerate(envs):                 idx = lmip(envs, tails, env)                 if idx >= len(tails):                     tails.append(i)                 else:                     tails[idx] = i             return len(tails)         def f(x, y):             return -1 if (x[0] < y[0] or x[0] == y[0] and x[1] > y[1]) else 1         envs.sort(key=cmp_to_key(f))         return liss(envs) if __name__ == "__main__":     N = int(input())     block = []     for _ in range(N):         tmp = list(map(int, input().split()))         block.append(tmp)     print(Solution().maxEnvelopes(block))
点赞 1

相关推荐

01-30 16:13
浙江大学 Java
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务