2017.9.28 产品加工 思考记录

来源:互联网 发布:java局域网访问数据库 编辑:程序博客网 时间:2024/04/28 22:14

很早之前做的了、发现bzoj上竟然没提交过

于是又重推了一遍

首先这个ti<=5是用来让n^2的复杂度降一降的,

然后就考虑装每个物品之后各个机器的耗时,同时,对于一个A机器的耗时,可能会有多个B机器的耗时,取min即可制造dp

以前写的更详细的题解:点击打开链接


码:

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,f[30005],g[30005],ans=1000000009,a,b,c,i,j;int main(){scanf("%d",&n);memset(f,0x7f,sizeof(f));g[0]=0;for(i=1;i<=n;i++){scanf("%d%d%d",&a,&b,&c);for(j=0;j<=(i-1)*5;j++){if(a!=0)f[j+a]=min(f[j+a],g[j]);    if(c!=0)f[j+c]=min(f[j+c],g[j]+c);if(b!=0)f[j]=min(g[j]+b,f[j]);}for(j=0;j<=i*5;j++){g[j]=f[j];f[j]=10000009;//cout<<g[j]<<" ";}//cout<<endl;}for(i=0;i<n*5;i++){ans=min(ans,max(g[i],i));}printf("%d",ans);}