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判负环。

  • 相关阅读:
    六.(二)oc分类-category(范畴、非正式协议)
    十二 .ocBlock
    十.oc内存管理
    七.(一)oc通知-NSNotification(通知中心-NSNotificationCenter)
    Storyboard中segue(转场)使用
    XCode 7.3.1(dmg) 官方直接下载地址
    jquery 判定checkbox是否选中
    SqlService 并发测试
    SQL Server 消息队列,处理程序错误
    DB开启 Service Broker,使用消息队列
  • 原文地址:https://www.cnblogs.com/hgangang/p/11533294.html
Copyright © 2011-2022 走看看