zoukankan      html  css  js  c++  java
  • 分数规划小结

    https://www.zybuluo.com/ysner/note/1262173

    定义

    给定数列({a},{b}),求解一组数列({x})(x_i={0,1}))
    使得$$frac{sum_{i=1}^na_ix_i}{sum_{i=1}^nb_ix_i}$$
    最大化。
    (只要有未知量相除,都是这玩意儿)

    方法

    主要是二分答案。
    设二分出的值为(mid),
    则应有$$frac{sum_{i=1}^na_ix_i}{sum_{i=1}^nb_ix_i}geq mid$$
    化化式子

    [sum_{i=1}^na_i*x_igeq mid*sum_{i=1}^nb_i*x_i ]

    [sum_{i=1}^na_i*x_i-mid*sum_{i=1}^nb_i*x_igeq0 ]

    于是只要找出一组(a_i-mid*b_igeq0),就能说明(ansgeq mid),缩小了二分范围。

    实现

    一般都是边权设为(a_i-mid*b_i),然后判图中是否有负环,或者网络流看能否跑出正费用。

    题目

    • [X] [HNOI2009]最小圈
      (a_i)是边权,(b_i=1),改下不等号方向,找负环即可。
    • [x] [APIO2017]商旅
      把所有能交易的一对集市都连起来,预处理出每对间的距离(b_i),和可能得到的最大利润(a_i)(即商品最大差价)。
      然后把所有点入队找非负环即可。
      当然如果你入队了却不标记,就会卡在(94pts)卡半年。
    • [X] [SCOI2014]方伯伯运椰子
    • [x] [SDOI2017]新生舞会
    • [x] [bzoj3232]圈地游戏
  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/yanshannan/p/9535955.html
Copyright © 2011-2022 走看看