UVA - 10163 Storage Keepers 多重背包

问题

仓库守卫,一共有N个仓库,有M人应聘首位,每个仓库最多一个守卫,一个守卫可以看管多个仓库,守卫i的能力值是 P i P_i Pi,薪资等于能力值,仓库的安全系数L等于 P i / K P_i/K Pi/K的整数部分, K K K是守卫 i i i看守的仓库数量
求最小安全系数的最大值,和此前提下的最小能力值总和

分析

多重背包思路有点相似
分开计算,首先求最大最小安全系数 L(使用二分法或者DP),再求最小的能力值总和Y
状态:
L(i,j)代表为前i个守卫安排负责前j个仓库得到的最大最小安全系数
Y(i,j)代表为前i个守卫安排负责前j个仓库在符合要求的情况下(系数大于要求)得到的最小费用
状态转移方程是
L [ i ] [ j ] = m a x ( L [ i ] [ j ] , m i n ( v a l u e [ i ] / k , L [ i − 1 ] [ j − k ] ) ) , 0 < = k < = j L[i][j]=max(L[i][j],min(value[i]/k,L[i-1][j-k])),0<=k<=j L[i][j]=max(L[i][j],min(value[i]/k,L[i1][jk])),0<=k<=j
Y [ i ] [ j ] = m i n ( Y [ i ] [ j ] , v a l u e [ i ] + Y [ i − 1 ] [ j − k ] ) , 1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值