首先想到DP。
设F[i,j]表示第一项工作做了i次,第二项工作做了j次时的最小时间。
枚举一重表示当前到那个人,两重表示当前状态,两重表示上一个人时的状态。
O(m^4n)。。。
这样设肯定不行。
因为有两个状态+一个时间共三个量,所以可以想到通过二分时间,枚举一个量来算另一个量。
设F[i,j]表示一直到第i个人,第一项工作一共做了j次时第二项工作能做的最大次数。
设t表示二分的时间。
很明显,若F[n,m]≥m,说明两项工作都能做完。
设当前枚举到第i个人,第一项工作共做了j次,到第i-1个人时第一项工作共做了k次。
可以得出第i个人第一项工作做了(j-k)次。
那么第i个人做第一项工作共花费的时间就是(j-k)*Xi,剩余时间为t-(j-k)*Xi。
那么他最多能做(t-(j-k)*Xi) div Yi次第二项工作。
得出状态转移方程:
F[i,j]=max(F[i-1,k]+(t-(j-k)*Xi) div Yi)