【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与凸包的交点上(可能会忘了这种情况?)。

你可能感兴趣的:(凸包)