• 醉醺醺的幻想乡


    显然第一问直接按照题意最大流。
    二次方流量考虑导数。
    (f(x))表示每条边单位流量费用(leq x)的最大流,答案就是对这个函数进行积分。
    (f)是个分段一次函数。这是因为边权费用导数(2ax+b)是个关于(x)的一次函数。
    (f)是上凸的。考虑最小割,一个割的代价在(x)初是个一次函数。
    由于(a,bleq 3),所以斜率只有(3n)种。
    所以(f)是个段数不超过(3n)的分段函数。
    考虑怎么求出(f)。可以分治,我们判定当前最左边的一次函数(a)和最右边的一次函数(b)交点((c,d)),考虑(c)点的值是否为(d)
    如果是,则返回,否则中间还有新的半平面。需要得到(c)处的直线才能继续递归。
    考虑如何得到某个点(x)处的直线。
    根据定义,每条边(i)的流量上界重定为(min(frac{x-b_i}{2a_i},c_i))
    用最大流算法跑实数最大流。
    对于一条满流的边(最小割所在边)。
    如果(a_i=0)(bleq x),则流量一次函数(+=c_i)
    如果(2a_ic_i+b_ileq x),则这条边的单位费用不会超过(x),流量一次函数(+=c_i)
    否则如果(x)增加(y),则流量一次函数(+=frac{y}{2a_i})
    流量一次函数的斜率加上(frac{1}{2a_i})
    同时发现(min(frac{x-b_i}{2a_i},c_i))只有在(xgeq b_i)才能(geq 0)
    所以流量一次函数的截距(-=frac{b_i}{2a_i})
    对于右边连向t的边,如果满流,则流量一次函数截距(+=f)
    使用分数类实现斜率/截距的运算。
    感觉好玄学。

  • 相关阅读:
    PerfDog
    adb 常用操作
    netstat命令(net-tools)
    资源路径总结:
    四个作用域对象:
    jsp的 九大内置对象
    Jsp 的语法和指令
    JSP 学习
    server.xml 文件:
    Web.xml 文件使用总结:
  • 原文地址:https://www.cnblogs.com/ctmlpfs/p/14401532.html
Copyright © 2020-2023  润新知