高中OJ3515. 【NOIP2013模拟11.6B组】软件公司

44 篇文章 0 订阅
32 篇文章 0 订阅

首先想到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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值