zoukankan      html  css  js  c++  java
  • 【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判负环。

  • 相关阅读:
    c# DateTime 格式化输出字符串
    计算运行时长
    ubuntu helpers
    json.net omit member
    git 本地项目关联新repo
    c# DirectoryEntry LDAPS
    为视图或函数指定的列名比其定义中的列多
    Java反序列化漏洞学习笔记
    流量抓包
    软件安全策略-下
  • 原文地址:https://www.cnblogs.com/hgangang/p/11533294.html
Copyright © 2011-2022 走看看