第一类:甲工序的加工时长少于乙工序的加工时长。
第二类:甲工序的加工时长不少于乙工序的加工时长。
第一类应将在甲工序花费时间少的产品排在前面,第二类应将在乙工序花费时间少的产品排在后面,然后先处理所有第一类产品,再处理第二类产品。可以证明,这样排序后所有奶茶加工完成花费的总时间最少。
如:有4杯奶茶的订单,它们在甲工序的加工时长分别为2、3、5、1,在乙工序的加工时长分别为3、1、2、5,将奶茶分类、排序、合并、计算时长的过程如图所示,最后得出总时长为12。(每杯奶茶在乙工序开始加工需同时满足它甲工序加工完并且乙工序已加工完上一个产品这两个条件)
编写程序模拟奶茶店对这n杯奶茶的处理过程,计算总加工时间。
请回答下列问题:
(1)由题意可知,若3杯奶茶在甲工序加工时长分别为3、1、3,乙工序加工时长分别为2、4、3,则总加工时长为
(2)小李先编写了如下将第一类产品排序的函数:
def order1(a,b): #参数a、b的元素分别表示每杯奶茶在甲乙两道工序的加工时长。
ans=[0]*100
idx=[0]*100
tmp1=[];tmp2=[]
for i in range(len(a)):
①
idx[a[i]]=b[i] #原始序号排序后会跑到第b[i]位置上
for i in range(len(ans)):
while ans[i]>0:
②
tmp2.append(idx[i])
ans[i]-=1
return tmp1,tmp2
请在划线处填入合适的代码。
(3)小方编写了将第二类产品排序的函数:
def order2(a,b): #参数a、b的元素分别表示每杯奶茶在甲乙两道工序的加工时长。
#代码略
小张结合前两位同学的程序,计算产品加工总时长。请在划线处填入合适的代码。读取n杯奶茶在甲乙两道工序加工的时间,根据题目要求分为两类,第一类在甲乙两道工序加工的时间分别存储在列表a1和列表b1中,并通过order1()函数排序,第二类在甲乙两道工序加工的时间分别存储在列表a2和列表b2中,并通过order2()函数排序,代码略。
‘’’#代码略
a=a1+a2
b=b1+b2
n= len(a)
ta,tb=0,0 #ta为甲加工时间,tb为乙加工时间
for i in range (n) :
ta+=a[i]
if ①
tb=ta
②
print("总加工时长最短为:",tb)
同类型试题
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2