求助p1065.python.测试集7,8,9过不了
  • 板块题目总版
  • 楼主N__E__E
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/1/29 14:04
  • 上次更新2023/10/28 10:25:24
查看原帖
求助p1065.python.测试集7,8,9过不了
552604
N__E__E楼主2022/1/29 14:04
def arrange(stuff_num, machine, needtime): #形参含义:工件序号,此轮应使用的机器,所需时间
    start_search_index = last_occur_time[stuff_num]
    j = 0
    while 1:
        for i in range(start_search_index+j,start_search_index+j+needtime):
            #print("in for:{}".format(i))
            if timeline[machine][i] == 1:
                break
        #print("out for:{}".format(i))
        if i+1 == start_search_index+j+needtime:
            next_seq[stuff_num]+=1
            last_occur_time[stuff_num] = i+1
            for i in range(start_search_index+j,start_search_index+j+needtime):
                timeline[machine][i] = 1
            break
        else:j+=1

next_seq = [1 for i in range(22)] #下一次加工的顺序,下标从1开始
last_occur_time = [0 for i in range(22)] #最后一次出现的时间点,下标从1开始
working_seq = [[]]  # working_seq[i]记录i号工件的机器号顺序,下标从1开始
need_time = [[]]  # 记录方式同上,记录了所需时间
timeline = [[0 for i in range(2500)] for j in range(2500)]  # timeline[i]记录第i号机器的时间线
arrange_seq = []

if __name__ == '__main__':
    m, n = map(int,input().split())
    arrange_seq.extend(map(int,input().split()))
    for i in range(n): # insert一个无意义的数使下标从1开始,下同
        alist = list(map(int,input().split()))
        alist.insert(0,0)
        working_seq.append(alist)
    for i in range(n):
        alist = list(map(int,input().split()))
        alist.insert(0,0)
        need_time.append(alist)
    for k in arrange_seq: #在时间线上安排
        arrange(k,working_seq[k][next_seq[k]],need_time[k][next_seq[k]])
    ans = 0
    for i in range(1,n+1):
        ans = max(ans,last_occur_time[i])
    print(ans)

        
2022/1/29 14:04
加载中...