我是个臭弟弟,只做了第一题还没有全过。。。
第一次写CSDN,给后来人留点东西。。。
言归正传。
第一题
题目:
勇士打怪
假设勇士能力值为a
每个怪兽也有能力b
如果勇士的能力值大于等于怪兽得能力值,则勇士可以消灭怪兽获得1金币
勇士随时可以花费1金币使自己的能力值提高1
输入如下:
a,n
A[i]
1 3
1 2 2
含义:勇士能力值a为1,有3个怪兽,每个怪兽的能力存在A[i]中
求勇士能获得的最大金币数,怪兽可以不打完。
对以上输入,输出为2,代表勇士能获得的最大金币数为2。
下面是我自己对该问题的 提交代码,但是通过率为90%还不知道哪里出了问题。
//不常用标准输入输出感觉有点蠢。。。
整体思路如下:
勇士当前能力值能获得的最大金钱
也就是找到勇士能获得的最大能力值
循环为能力值从初始值到最大能力值
找到每个能力值下能获得的最大金钱:
使用bisect包中的bisect_right(),对所有怪兽能力排序后
可直接获取该能力下能获得的最大金钱
再减去升到该能力值的花费即可
最终输出每个能力值下能获得的最大金钱的最大值
最后90%通过没想到哪里出了问题。。大佬们请指教
// An highlighted block
import sys
import bisect
if __name__ == "__main__":
# 读取第一行的a,n
line0 = sys.stdin.readline().strip()
aa = list(map(int,line0.split()))
a=int(aa[0])
n=int(aa[1]

本文记录了阿里校招暑假实习笔试的第一题,即勇士打怪问题。题目要求根据勇士能力和怪兽能力值,寻找勇士能获得最多金币的策略。勇士可以花费金币提升能力值。作者分享了其解决方案,但遇到一个反例,说明了存在的问题,并给出了修正后的代码。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



