阿里笔试0804 跪求!求问各位大佬 这为啥是0ac

第一题做到这里0ac 心态崩了 怎么也该有个10%吧 二分没有心情写了 孩子没了

n, m = map(int, input().split())
person = list(map(int, input().split()))
house = []
for i in range(m):
    house.append(list(map(int, input().split())))
person = sorted(person,reverse = True)
house = sorted(house, key = lambda x:x[0], reverse = True)
ans = []
visited = []
for i in range(n):
    conf = float('-inf')
    idx = -1
    for j in range(m):
        if person[i]>=house[j][1] and house[j][0]>=conf and j not in visited:
            conf = house[j][0]
            idx = j
            break
    if idx!=-1:
        visited.append(idx)
        ans.append(conf)
if ans == []:
    print(0)
else:
    print(sum(ans))

            
            

#笔试题目##阿里巴巴#
全部评论
我也挂了,第二题我想到了一个方法。把字符串分成只含有a/c/e和只含有b/d/f的两个字符串。既然一定要a<c<e;b<d<f;那么是不是可以看成分别求出这两个字符串的“最长的增序列”呢?然后输出两个最长增序列的长度之和即可
2 回复 分享
发布于 2020-08-03 20:41
好吧 求解了一下大佬 复杂度过高 用二分能降点 题目确实也说了都是大数
点赞 回复 分享
发布于 2020-08-03 20:16
我用优先队列过的
点赞 回复 分享
发布于 2020-08-03 20:17
我把题解写了,感兴趣的同学可以互相交流一下  https://www.nowcoder.com/discuss/466066?source_id=profile_create&channel=666
点赞 回复 分享
发布于 2020-08-03 21:03

相关推荐

09-26 19:36
已编辑
西北大学 C++
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-27 21:08
点赞 评论 收藏
分享
08-03 00:07
山西大学 Java
汪汪offer收割侠:5k没问题的
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务