流水線排程

2021-08-07 10:48:05 字數 1076 閱讀 1071

n個作業要在由2臺機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為a[i]和b[i]。你可以安排每個作業的執行順序,使得從第乙個作業在機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時間最少。求這個最少的時間。

input

第1行:1個數n,表示作業的數量。(2 <= n <= 50000)

第2 - n + 1行:每行兩個數,中間用空格分隔,表示在m1和m2上加工所需的時間a[i], b[i]。(1 <= a[i], b[i] <= 10000)。

output

輸出完成所有作業所需的最少時間。
input示例

4

3 72 1

1 14 2

output示例

14思路:流水排程問題的johnson演算法:

1)令n1=

2)將n1中作業按照ai的非遞減排序(<=),將n2中作業按照bi的非遞增排序(>=);

3)n1中作業和n2中作業相連線構成滿足johnson法則的最優排程。

#include #include using namespace std;

const int maxn = 50001;

struct node

;node a[maxn], b[maxn];

bool cmp1(const node &left, const node &right)

bool cmp2(const node &left, const node &right)

int main()

else

}sort(a, a + p, cmp1);

sort(b, b + q, cmp2);

int time = 0;

int t1 = 0;

for (int i = 0; i < p; i++)

for (int i = 0; i < q; i++)

cout << time << endl;

return 0;

}

動態規劃 流水線排程問題

n個作業要在由2臺機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為ai和bi。流水作業排程問題要求確定這n個作業的最優加工順序,使得從第乙個作業在機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時間最少。1...

流水線冒險

流水線冒險 回顧一下常用五階段流水線 f 取指 d 解碼 e 執行 m 訪存 w 寫回 注意 對暫存器檔案的寫只有在時鐘上公升的時候才會更新!資料冒險的原因 對暫存器檔案的讀寫是在不同階段進行的 1.用暫停來避免資料冒險 暫停時,處理器會停止流水線中一條或多條指令,直到冒險條件不再滿足。在本該正常處...

渲染流水線

應用階段 cpu準備資料,skinmeshrender,meshfilter,meshrender 頂點資料,三角形資料,法線資料,切線資料,渲染設定指令,紋理資料,uv資料 由cpu傳送給gpu,即一次drawcall 幾何階段 頂點變換,計算頂點顏色 如逐頂點光照 齊次裁剪空間,透視除法,歸一化...