【华为0921】【python】开电动车回家过年

练习

题目来源(公众号:万诺coding)
题目内容

新年即将来临,小明计划开新买的电动汽车回老家过年。

已知小明的工作地在上海,老家在中部某城市A。上海到城市A的距离是L公里(1<=L≤100000)。

小明的电动汽车的电池航程是P,电池最大电量也是P(假设电动汽车行使一公里需要消耗1度电。(1<=P<=100))。如果电动车在中途电量耗尽了,将无法继续强行,也就无法到达目的地了。

已知小明出发前已经把电池充满了。途中依次经过N(1<=N<10000)个充电站。第i个充电站距离城市A有 Ai公里,最大可充电 Bi度。

请问,小明能不能顺利地回老家过年?如果可以,请输出最少需要充电多少次;如果不可以,请输出-1。

解答要求

时间限制: C/C++ 1000ms, 其他语言: 2000ms内存限制: C/C++ 256MB,其他语言: 512MB

输入

输入的第一行为数字N。

接下来的N行,每行包含2个数并用空格隔开: Ai Bi

最后一行包括两个数LP,并用空格隔开。

输出

按照题目要求输出最少次数或者-1。

class NODE():

    def __init__(self,val=None,dis = None, locn = None,addNum = None, ln=None,rn=None):
        self.value = val
        self.distance = dis
        self.locNum = locn
        self.addNum = addNum
        self.leftnode = ln
        self.rightnode = rn
L=25
P=10
A = [4,5,11,15]
A.reverse()
A.append(0)
A = [L]+A
B = [4,5,6,8,0]
B.reverse()

locNum = len(A)-1
head = NODE(10,25,0,0)
nodelist = [head]
tmplist = []
while len(nodelist)!=0:
    node = nodelist.pop(0)
    if node.value<0:
        continue
    if node.locNum == locNum:
        tmplist.append(node.addNum)
        continue
    nowP = node.value
    nowDis = node.distance
    addP = B[node.locNum]
    nextDis = A[node.locNum+1]
    node.leftnode = NODE(nowP-nowDis+nextDis,nextDis,node.locNum+1,node.addNum)
    node.rightnode = NODE(nowP-nowDis+nextDis+addP,nextDis,node.locNum+1,node.addNum+1)
    nodelist.append(node.leftnode)
    nodelist.append(node.rightnode)
    
print(min(tmplist))
    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值