阿里4.1日笔试

唉,0分,太难受了 ,凉凉
笔试主要在做第二题,之前没准备好数据输入的代码,还浪费了一段时间(难受。。。。)
做第二题时,需要两层for循环,但是改代码的时候,发现第二层for循环死活改不好,就是进不去,最后只能在循环外面写了(心累),刚刚终于改完第二题的代码。
题目是说要打怪兽(一个箭打一个怪兽,打死这一个打下一个,都打完了就计算付出的代价,每支箭都有对应的代价,输出加和最小的那个,打不死就凉了(输出“No”)),用例的第一个数字表示测试数据的组数(两组),然后分别输入这几(两)组
第一组数据,首先给出怪兽的数量和箭的数量,然后给出每只怪兽的血量,然后给出每支箭的伤害值,然后给出每支箭的代价。
代码如下:
def solve(values2,values3,values4):
    values2.sort()
    c=list(zip(values4,values3))
    c.sort()
    sum = 0
    flag =[0]*len(values2)
    l = [i for i in range(len(values2))]
    l.reverse()
    for i in range(len(values3)):
        for j in l:
            if c[i][1]>=values2[j] and flag[j]==0:
                sum+=c[i][0]
                flag[j]=1
                break
    if flag.count(0)==0:
        return sum
    else:
        return "No"

import sys
if __name__ == "__main__":
    # 读取第一行的n
    n = int(sys.stdin.readline().strip())
    ans = 0
    array = []
    for i in range(n):
        # 读取每一行
        line1 = sys.stdin.readline().strip()
        # 把每一行的数字分隔后转化成int列表
        values1 = list(map(int, line1.split()))
        line2 = sys.stdin.readline().strip()
        values2 = list(map(int, line2.split()))
        line3 = sys.stdin.readline().strip()
        values3 = list(map(int, line3.split()))
        line4 = sys.stdin.readline().strip()
        values4 = list(map(int, line4.split()))
        array.append(solve(values2,values3,values4))
    for i in array:
        print(i)
# 测试用例
# 2
# 3 3
# 1 2 3
# 2 3 4
# 1 2 3
# 3 4
# 1 2 3
# 1 2 3 4
# 1 2 3 1
唉,心痛。。。不知道还有没有面试😔

#阿里笔试##阿里巴巴##实习##笔试题目##Python#
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 15:19
简历上能写3个月吗?
码农索隆:大胆写,主要你能把实习经历包装好,可以看一下我这篇帖子https://www.nowcoder.com/share/jump/4888395581180798063
点赞 评论 收藏
分享
xdm怎么说 要被拷打了 担心是KPI
丹田:面就完了,就当日薪四位数的大佬免费给给你面试。
点赞 评论 收藏
分享
asdasdasda...:19岁,不容易啊可能升个本会好点,现在学历歧视太严重了
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务