貪心(流水線排程問題) 51nod 1205

2021-08-13 06:22:43 字數 831 閱讀 2961

關於流水下排程之前上課,高老師講了(一台和兩台機器的排程問題,不過都是一次加工完成的,如果是這種情況就只需要每次挑加工時間最短的就可以了)。但是這題較之要難一點:一件物品加工兩次:一件物品粗加工後,才能到第二個機器進行深加工。因此計算時間的時候借助畫線段來分析思路比較清晰。

思路:先把所有物品分為兩類,一類是粗加工比深加工時間短的,這個集合內元素的排序按粗加工的時間從小到大排序。另一類是深加工時間比粗加工時間長的,這個集合內的元素按深加工的時間從大到小排列。計算時先計算第一類的時間,再進行第二類的時間。

正確性:因為分三種情況進行分類討論,所以對三種情況分別用剪下-貼上的方法進行驗證。不過討論和考慮時要注意的是,只用當一件物品完成粗加工才可深加工,這時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...