阿里笔试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 14:43
门头沟学院 C++
点赞 评论 收藏
分享
在抱佛脚的小松鼠很想回老家:挺好,自己做或者直接去环境好一点的店能吃的健康一点。
点赞 评论 收藏
分享
zxxxxxr:不是挂了,是美团招聘特有机制,三天第一志愿没处理会自动结束跳转到第二志愿,以此类推,只要有人后面捞也会回到第一志愿的
投递美团等公司10个岗位
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务