【SGU】278 Fuel-凸包


题意

n n n种燃料,每种有三个属性: a i , b i , c i a_i,b_i,c_i ai,bi,ci
给定 A , B A,B A,B,要求确定任意非负实数 m i m_i mi,满足 ∑ a i m i ≤ A , ∑ b i m i ≤ B ∑a_im_i≤A,∑b_im_i≤B aimiA,bimiB,使得 ∑ c i m i ∑c_im_i cimi最大,求这个最大值。


题解

乍一看是单纯性板题,然而复杂度过不去。

将不等式进行转化:
x i = m i c i , d i = a i c i , e i = b i c i x_i=m_ic_i,d_i=\frac{a_i}{c_i},e_i=\frac{b_i}{c_i} xi=mici,di=ciai,ei=cibi
则问题转化为:
∑ d i x i ≤ A ∑ e i x i ≤ B Max ( ∑ x i ) \sum d_ix_i\leq A\\\sum e_ix_i\leq B\\ \text{Max}(\sum x_i) dixiAeixiBMax(xi)

a n s = Max ( min ⁡ ( A d i , B e i ) ) ans=\text{Max}(\min(\frac{A}{d_i},\frac{B}{e_i})) ans=Max(min(diA,eiB))

类似于bzoj1027合金,将燃料看做二维平面上的点 ( d i , e i ) (d_i,e_i) (di,ei)求出平面上所有可以合成的燃料对应点的凸包,最优答案必然在凸包顶点或者 y = B A x y=\frac {B}{A}x y=ABx与凸包的交点上(可能会忘了这种情况?)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值