【SGU】278 Fuel-凸包

本文探讨了一种燃料优化问题,通过转换视角将问题转化为求解凸包顶点或特定直线与凸包交点上的最大值问题。通过对每种燃料的属性进行调整,利用线性规划思想找到最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


题意

nnn种燃料,每种有三个属性:ai,bi,cia_i,b_i,c_iai,bi,ci
给定A,BA,BA,B,要求确定任意非负实数mim_imi,满足∑aimi≤A,∑bimi≤B∑a_im_i≤A,∑b_im_i≤BaimiA,bimiB,使得∑cimi∑c_im_icimi最大,求这个最大值。


题解

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

将不等式进行转化:
xi=mici,di=aici,ei=bicix_i=m_ic_i,d_i=\frac{a_i}{c_i},e_i=\frac{b_i}{c_i}xi=mici,di=ciai,ei=cibi
则问题转化为:
∑dixi≤A∑eixi≤BMax(∑xi)\sum d_ix_i\leq A\\\sum e_ix_i\leq B\\ \text{Max}(\sum x_i)dixiAeixiBMax(xi)

ans=Max(min⁡(Adi,Bei))ans=\text{Max}(\min(\frac{A}{d_i},\frac{B}{e_i}))ans=Max(min(diA,eiB))

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值