阿里校招暑假实习4.20笔试第一题

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

我是个臭弟弟,只做了第一题还没有全过。。。
第一次写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[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值