關於流水下排程之前上課,高老師講了(一台和兩台機器的排程問題,不過都是一次加工完成的,如果是這種情況就只需要每次挑加工時間最短的就可以了)。但是這題較之要難一點:一件物品加工兩次:一件物品粗加工後,才能到第二個機器進行深加工。因此計算時間的時候借助畫線段來分析思路比較清晰。
思路:先把所有物品分為兩類,一類是粗加工比深加工時間短的,這個集合內元素的排序按粗加工的時間從小到大排序。另一類是深加工時間比粗加工時間長的,這個集合內的元素按深加工的時間從大到小排列。計算時先計算第一類的時間,再進行第二類的時間。
正確性:因為分三種情況進行分類討論,所以對三種情況分別用剪下-貼上的方法進行驗證。不過討論和考慮時要注意的是,只用當一件物品完成粗加工才可深加工,這時m2處於等待的時間。
計算的時候當times1>times2時,times2要和times1對其,這樣做才可以補上m2等待的時間。
#include#include#include#include#includeusing namespace std;
int n,m1,m2,times1,times2,times,wait,temp,temp2;
struct work
};struct cmp1
};struct cmp2
times2+=temp2;///781+2452+6678
if(!q2.empty())
while(!q2.empty())
times2+=temp2;
times+=max(times2,times1);
printf("%d\n",times);
}return 0;
}
51nod 1205 流水線排程
1205 流水線排程 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 收藏 關注 n個作業要在由2臺機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為a i 和b i 你可以安排每個作...
51Nod 1205 流水線排程
n個作業要在由2臺機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為aii和bii。你可以安排每個作業的執行順序,使得從第乙個作業在機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時間最少。求這個最少的時間。...
動態規劃 流水線排程問題
n個作業要在由2臺機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為ai和bi。流水作業排程問題要求確定這n個作業的最優加工順序,使得從第乙個作業在機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時間最少。1...