DP神题orz
dp[i]表示机器1工作i小时,机器2工作dp[i]小时
那么对于每个任务:
选1:dp[i]=dp[i-a];
选2:dp[i]=dp[i]+b;
选1+2:dp[i]=dp[i-c]+c;
#include<stdio.h> #include<algorithm> #include<string.h> using namespace std; ]; int main(){ scanf("%d", &n); maxT=n*; ; i<=maxT; i++) dp[i]=; dp[]=; ; i<=n; i++){ scanf("%d%d%d", &a, &b, &c); ; j--){ ; ) dp[j]=min(dp[j], dp[j-a]); if (b) dp[j]=min(dp[j], t+b); ) dp[j]=min(dp[j], dp[j-c]+c); } } int ans=0x7fffffff; ; i<=maxT; i++) ans=min(ans,max(dp[i],i)); printf("%d\n", ans); ; }