題解:貪心策略始終是乙個比較煩人的地方……容易出錯。
這道題因為必須先a再b,所以第乙個在a加工的產品的a值必須盡可能小,這樣能減少機器b的等待時間,最後乙個在b加工的零件的b值必須盡可能小,這樣減少機器a的等待時間。
按照每個產品a值和b值的最小值從小到大排序,如果最小值是a的話就把這個產品往前放,否則往後放。
這題有個比較容易錯的地方是最少加工時間= =應該考慮排好序後機器a的工作時間和機器b的工作時間,然後取最大值。
ac**:
#include #include using namespace std;
struct node
st[1005];
int n;
int ta, tb;
int ans[1005];
bool cmp(node a, node b)
for(int i=0; i>st[i].b;
st[i].w=min(st[i].a, st[i].b);
b+=st[i].b;
}sort(st, st+n, cmp);
int left, right;
left=0;
right=n-1;
for(int i=0; i
else
}cout<
for(int i=0; i
cout<
return 0;
}
加工生產排程
題目描述 某工廠收到了n個產品的訂單,這n個產品分別在a b兩個車間加工,並且必須先在a車間加工後才可以到b車間加工。某個產品i在a b兩車間加工的時間分別為ai bi。詢問怎樣安排這n個產品的加工順序,才能使總的加工時間最短。這裡所說的加工時間是指 從開始加工第乙個產品到最後所有的產品都已在a b...
加工生產排程
n個作業要在由兩台機器m1和m2組成的流水線上完成加工 每個作業i必須先在m1上然後在m2上加工,時間分別為ai和bi。確定這n個作業的加工順序,使得從第乙個任務開始在m1上加工到最後乙個任務在m2上加工完成的總時間盡量小。直觀上,最優排程一定讓m1沒有空閒,m2的空閒時間盡量少。演算法 使用陣列f...
加工生產排程
1425 例題4 加工生產排程 時間限制 1000 ms 記憶體限制 65536 kb 提交數 2662 通過數 689 題目描述 某工廠收到了 n 個產品的訂單,這 n 個產品分別在 a b 兩個車間加工,並且必須先在 a 車間加工後才可以到 b 車間加工。某個產品 i 在 a,b 兩車間加工的時...