【01分数规划】方伯伯运椰子 洛谷3288

题意:我们有一张无向无环图,点点之间有边连接,容量0及0以上都有可能,每单位花费x,扩展压缩管道,来使(X-Y)/K最大,即Y肯定是你经过压缩后比原来x花费少。

首先题目说容量不能减少,但是我们再想想扩展和压缩都要花钱,所以你一个扩展一条就得在别的管道压缩一条保证容量不减少,同时不增多,流量增多意味着你多扩展了,多扩展本身就得花钱,所以不是最优的。

那我们这么解决这道题呢,我们要求ans=max(x-y)/k;

我们知道这与流量无关,所以我们转而求花费,那我们就得建图边权为有关扩展压缩花费的,

流量在图里xjb跑,所以我们应该给他们建上一条扩展和压缩的边

压缩  (v,u,c)(c!=0)(v,u,c)(c!=0) 边权\ad   ///表示流量从这里退流回来,这条的花费为压缩所用a,以及你不走这条道路退回d花费
增广  (u,v,inf)\ \ \ \ \ \ \ \ \(u,v,inf)    边权 b+d

这时我们根据题意,在每两个点就有一个环

我们先解释下这个k,在这个新图建起来后,我们就知道k为走的边数,(也就是走一次边为k贡献一次,

因为我们建完图让流量自己跑就行,所以再给边权加上mid。

所以mid*k+sigama(边权)=0,此时是我们相求的的ans,

如果出现<0,说明mid不够大,反馈到图里就是出现负环,所以我们只需二分mid跑spfa判负环。

 

你可能感兴趣的:(【01分数规划】方伯伯运椰子 洛谷3288)