題目描述
某加工廠有a、b兩台機器,來加工的產品可以由其中任何一台機器完成,或者兩台機器共同完成。由於受到機器效能和產品特性的限制,不同的機器加工同一產品所需的時間會不同,若同時由兩台機器共同進行加工,所完成任務又會不同。某一天,加工廠接到n個產品加工的任務,每個任務的工作量不盡一樣。
你的任務就是:已知每個任務在a機器上加工所需的時間t1, b機器上加工所需的時間t2及由兩台機器共同加工所需的時間t3,請你合理安排任務的排程順序,使完成所有n個任務的總時間最少。
輸入格式
(輸入檔案共n+1行)
第1行為 n。 n是任務總數(1≤n≤6000)
第i+1行為3個[0,5]之間的非負整數t1,t2,t3,分別表示第i個任務在a機器上加工、b機器上加工、兩台機器共同加工所需要的時間。如果所給的時間t1或t2為0表示任務不能在該台機器上加工,如果t3為0表示任務不能同時由兩台機器加工。
輸出格式
最少完成時間
輸入輸出樣例
輸入 #1
52 1 0
0 5 0
2 4 1
0 0 3
2 1 1
輸出 #1
dp大炮,記f[i
][j]
f[i][j]
f[i][j
]為前i個產品,a機器用了j的時間,b機器所用時間的最小值。
說完狀態設計應該就知道怎麼寫了。
**
#include
using
namespace std;
namespace fastio
template
<
typename tn>
void
print
(tn a)
}using
namespace fastio;
const
int n=
6e3+5;
const
int m=
3e4+5;
int f[m][2
],n,t[n][4
],ans=
1e9;
intmain()
for(
int j=
0;j) f[j][0
]=f[j][1
];}for
(int i=
1;i) ans=
min(ans,
max(i,f[i][0
]));
printf
("%d\n"
,ans)
;return0;
}
收穫
部分答案可以記錄在dp的狀態裡。
HNOI2001 產品加工
hnoi2001 產品加工 有機器甲乙二者,加工產品者也.今有 n 個產品,加工於甲需耗時間 t 加工於乙需耗時間 t 二者同時為其加工需耗時間 t 若 t 為 0 則表示無法用此方式加工 機器者,專一者也,一時只加工一產品也.試問加工完畢最小時間有幾何.挺神奇的一道題.一開始考慮開三個陣列 f 3...
1222 HNOI2001 產品加工
某加工廠有a b兩台機器,來加工的產品可以由其中任何一台機器完成,或者兩台機器共同完成。由於受到機器效能和產品特性的限制,不同的機器加工同一產品所需的時間會不同,若同時由兩台機器共同進行加工,所完成任務又會不同。某一天,加工廠接到n個產品加工的任務,每個任務的工作量不盡一樣。你的任務就是 已知每個任...
BZOJ1222 HNOI2001 產品加工
某加工廠有a b兩台機器,來加工的產品可以由其中任何一台機器完成,或者兩台機器共同完成。由於受到機器效能和產品特性的限制,不同的機器加工同一產品所需的時間會不同,若同時由兩台機器共同進行加工,所完成任務又會不同。某一天,加工廠接到n個產品加工的任務,每個任務的工作量不盡一樣。你的任務就是 已知每個任...