用f[i][j]表示完成前i個任務,在a機器上加工j小時時b機器上最少要工作多小時,轉移就分為三種,即$f[i][j]=min(f[i-1][j-t1],f[i-1][j]+t2,f[i-t3]+t3)$,然後這個東西可以用類似於揹包的方式優化到1維(注意要從大到小列舉)
1 #include2view codeusing
namespace
std;
3int n,a,b,c,s,ans,f[30005];4
intmain()16}
17 ans=f[0
];18
for(int i=1;i<=5*n;i++)ans=min(ans,max(i,f[i]));
19 printf("%d"
,ans);
20 }
BZOJ1222 HNOI2001 產品加工
某加工廠有a b兩台機器,來加工的產品可以由其中任何一台機器完成,或者兩台機器共同完成。由於受到機器效能和產品特性的限制,不同的機器加工同一產品所需的時間會不同,若同時由兩台機器共同進行加工,所完成任務又會不同。某一天,加工廠接到n個產品加工的任務,每個任務的工作量不盡一樣。你的任務就是 已知每個任...
bzoj 1222 HNOI2001 產品加工
題意 有兩台機器,給出n個產品在1號機器 2號機器 兩台機器一起的加工時間,0表示不能以某種方式加工,問最快加工時間。題解 dp 很強。f i j 表示前i個產品,在2號機器上用了j的時間,1號機器用的時間。第一維滾一下。轉移看 include include include using names...
1222 HNOI2001 產品加工
某加工廠有a b兩台機器,來加工的產品可以由其中任何一台機器完成,或者兩台機器共同完成。由於受到機器效能和產品特性的限制,不同的機器加工同一產品所需的時間會不同,若同時由兩台機器共同進行加工,所完成任務又會不同。某一天,加工廠接到n個產品加工的任務,每個任務的工作量不盡一樣。你的任務就是 已知每個任...