Python提交遇到数组越界

0x07 基本算法-贪心    E题

在用python提交的时候报了


不通过
您的代码已保存
请检查是否存在语法错误或者数组越界非法访问等情况
case通过率为0.00%

求助牛客的大佬们

class Myclass(object):
    class Node(object):
        def __init__(self,father,num,val,avg):
            self.father=father
            self.num=num
            self.val=val
            self.avg=avg
    def make_struct(self,father,num,val,avg):
        return self.Node(father,num,val,avg)
myclass=Myclass()
no=[]
line=[]

def find(n,root):
    res=-1
    pos=0
    for i in range(1,n+1):
        if i is not root and no[i].avg > res:
            res=no[i].avg
            pos=i
    return pos

while True:
    n,root=map(int,input().split())
    if n==0 and root==0:
        break
    ans=0
    line.clear()
    line=list(map(int,input().split(" ")))
    no.clear()
    no.append(myclass.make_struct(0,0,0,0.0))
    for i in range(1,n+1):
        val=line[i-1]
        avg=float(val)
        num=1
        no.append(myclass.make_struct(0,num,val,avg))
        ans+=no[i].val
    for i in range(1,n):
        a,b=map(int,input().split())
        no[b].father=a
    for i in range(1,n):
        f=find(n,root)
        father=no[f].father
        ans+=no[father].num*no[f].val
        no[f].avg=-1.0
        for j in range(1,n+1):
            if no[j].father is f:
                no[j].father=father
        no[father].num+=no[f].num
        no[father].val+=no[f].val
        no[father].avg=no[father].val/no[father].num
    print(ans)


全部评论

相关推荐

10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务