-
模拟
纯模拟+阅读理解,太恶心了
要满足的就是①按序插入②每一次插入时从左往右找空插入③需要记录每个工件当前所处的时刻,因为同一个工件的加工顺序不能乱
刚开始思路有点问题,不用判断机器所处的时间,只要不断尝试往里插空就行,测试点7没过,看了一下其他解法也没过,不知道什么问题
m,n=map(int,input().split())#m机器数 n工件数 m也代表工序数 shunxu=list(map(int,input().split()))#加工顺序 jiqihao=[] shijian=[] for i in range(n): jiqihao.append(list(map(int,input().split()))) #每个工件的每个工序所使用的机器号 for i in range(n): shijian.append(list(map(int,input().split()))) #每个工件的每个工序的加工时间 gongjiannow=[0]*n#记录每个工件当前所处的时刻 moni=[[0]*m*n*20 for _ in range(m)]#模拟每个机器的安排 #按顺序插入 i代表几号工件,j代表第几道工序,jiqi代表第几台机器 for k in range(n*m): i=shunxu[k]-1 j=shunxu[:k+1].count(shunxu[k])-1 jiqi=jiqihao[i][j]-1 t=max(moni[jiqi].index(0),gongjiannow[i]) while True: # print(t,t+shijian[i][j]) # print(moni[jiqi][t:t+shijian[i][j]].count(0)) if moni[jiqi][t:t+shijian[i][j]].count(0)<shijian[i][j]: t+=1 else: gongjiannow[i]=t+shijian[i][j] for l in range(shijian[i][j]): moni[jiqi][t+l]=i+1 break # print(moni) # input() print(max(gongjiannow))
python实现洛谷P1065 [NOIP2006 提高组] 作业调度方案:
于 2024-03-06 16:17:14 首次发布