HNOI2001 產品加工

2021-10-01 06:14:22 字數 1331 閱讀 7305

題目描述

某加工廠有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個產品加工的任務,每個任務的工作量不盡一樣。你的任務就是 已知每個任...