問題描述:乙個公司下面有n個部門,現在要給每個部門分配任務,分配任務只能按照分配的順序進行,不能同時分配兩個任務,只能乙個接乙個的分配,但是分配完任務後,該部門可以立刻執行(不間斷),分配乙個任務的時間是a,執行乙個任務的時間是b,你需要做的就是決定分配給每乙個部門的任務的順序,使得所有的部門完成任務的總時間最短。
思路:貪心策略。因為分配時只有乙個部門負責,可以想象,分配部門的工作是不間斷的,給第乙個任務分配完,就要繼續給第二個任務分配,他的工作時間從開始,一直到所有的工作都分配結束,分配部門停止工作的時間是所有工作的分配時間之和。每個任務必須要在分配結束之後才能執行。所以,由於分配的總時間是固定的,所以就是看最後的執行時間,所以要盡可能地讓執行時間長的任務先分配,類似於多處最優服務次序問題。
**如下:
work中,a代表分配時間,b代表執行時間。
at陣列記錄每個任務的分配時間,如at[2]代表任務2的分配結束時間。bt[2]代表任務2的執行結束時間。最後,在bt中遍歷求得最大值,即為最小的任務完成時間。
#includeusing namespace std;/*3
2 23 4
1 53
2 44 2
3 3*/
struct work;
bool cmp(work x,work y)
int main()
sort(works+1,works+n+1,cmp);
at[0]=0;
for(int i=1;imaxx) maxx=bt[i];
} cout
}
任務分配問題
任務分配問題是在加權 二分圖中尋找最大 或最小 加權匹配的問題。隱藏 分為以下幾類 這些問題都是組合優化的研究物件。有一些員工要完成一些任務。各個員工完成不同任務所花費的時間都不同。每個員工只分配一項任務。每項任務只被分配給乙個員工。怎樣分配員工與任務以使所花費的時間最少?婚配問題 有一些男人和一些...
任務分配問題
題目要求 輸入 第一行是操作員的人數n 4 輸出 完成所有任務的最短時間。測試用例 test input expected output time limitation memory limitation extra process number test case 1 view plain 4 3...
任務分配問題 回溯演算法
要求把n項任務分配給 n個人,每個人完成每項任務的成本不同,要求分配成本最小的最優分配方案。include define n 205 using namespace std int c n n int x n int bestm n int n int bmin 999999999 int sum ...