description
假設有n個任務由k個並行工作的機器來完成。完成任務i需要的時間為ti。試設計乙個演算法找出完成這n個任務的最佳排程,使得完成全部任務的時間最早。
演算法設計:對任意給定的整數n和k,以及完成任務i需要的時間為ti,i=1,2,3……n。計算完成這n個任務的最佳排程。
input
第一行有2個正整數n和k。第2行的n個正整數是完成n個任務需要的時間。
output
將計算的完成全部任務的最早時間
sample input
7 32 14 4 16 6 5 3
sample output17
這題我是用搜尋來做的
這題有點像接水問題
varn,k,tj,i:longint;
b,t:array[0..10000]of longint;
procedure kp(l,r:longint);
vari,j,mid:longint;
begin
if l>=r then exit;
i:=l;j:=r;mid:=t[(l+r)div 2];
repeat
while t[i]>mid do inc(i);
while t[j]j;
kp(l,j);
kp(i,r);
end;
procedure search(dep,time:longint);
vari:longint;
begin
if dep>n then
if time=tj then exit;
for i:=1 to k do
begin
b[i]:=b[i]+t[dep];
if b[i]>time then search(dep+1,b[i]) else search(dep+1,time);
b[i]:=b[i]-t[dep];
end;
end;
begin
readln(n,k);tj:=10000;
fillchar(t,sizeof(t),0);
for i:=1 to n do
read(t[i]);
kp(1,n);
fillchar(b,sizeof(b),0);
search(1,0);
write(tj);
end.
最佳排程問題
假設有n n 20 個任務由k k 20 個可並行工作的機器完成。完成任務i需要的時間為ti。試設計乙個演算法,對任意給定的整數n和k,以及完成任務i 需要的時間為ti i 1 n。計算完成這n個任務的最佳排程,使得完成全部任務的時間最早。輸入格式 輸入資料的第一行有2 個正整數n和k。第2 行的n...
最佳排程問題
假設有n個任務由k個可並行工作的機器完成,完成任務i需要的時間為ti,對任意給定的整數n和k,以及完成任務i需要的時間ti,設計乙個演算法,求完成這n個任務的最佳排程,使得完成全部任務的時間最早。第一行有2個正整數n和k,第二行有n個正整數,表示ti n 7000,c樣例輸入7 3 2 14 4 1...
PTA 最佳排程問題
假設有n n 20 個任務由k k 20 個可並行工作的機器完成。完成任務i需要的時間為ti。試設計乙個演算法,對任意給定的整數n和k,以及完成任務i 需要的時間為ti i 1 n。計算完成這n個任務的最佳排程,使得完成全部任務的時間最早。輸入格式 輸入資料的第一行有2 個正整數n和k。第2 行的n...