• 对偶问题


    对偶问题相关

    1.一些定义

    [max{c^Tx|Axle b}=min{b^Ty|A^Tyge c} ]

    其中(c)表示每种产品可以得到的收益,(x)是每种产品的生产个数。(A)是每种产品需要的每种原材料的个数,(b)是每种原材料的个数限制。(y)是每种原材料的价格。

    那么这个式子左侧就是一个生产商,有若干原材料,需要找到生产产品的最优方案,使得收益最大化。

    右侧是一个黑心商家,有这么多原材料要出售,生产每种产品的原材料的价钱不能低于其出售的收益,也就是不想让生产商赚钱,但是为了让自己体面一点,想要原材料卖出去的总价钱最少。

    那都说了不想让生产商赚钱,那么在此基础上又想要原材料的总价格最小,显然就是生产出来不赔不赚。

    意味着左右两侧是相等的。(强行感性理解)

    那么这个东西可以把最值问题转化为其对偶问题。

    一个例子

    CF671D

    (m)个人,每个人可以花费(c_i)的代价,覆盖树上(a_i,b_i)这段路径,保证(a_i)(b_i)的祖先。求最小代价使得每条边都被覆盖了一次。

    既然是最小代价,那么此时我们处于等式的右侧,那么想想每个东西分别代表着什么。

    每种产品和(m)个人一一对应,树上的每一条边和一个原材料进行对应,这样就知道了(A)是什么。而(y)显然就是(m)个人,每个人选还是不选。那么(b)显然就是每个人的代价,要做的就是最小化被选的人的代价之和。

    (c)是出售价格,那么在题目中的限制就是每条边都至少要被覆盖一次,因此(c)全是(1)

    这样子我们确定了右边了。

    现在转化对偶问题考虑左边。(x)是每个人是选还是不选,(max{c^Tx})就是所有边被覆盖总次数的最大值。

    (Ax)的含义就是每个人覆盖的区间中,所有边被覆盖的总次数,它要小于这个人选择的代价。

    那么这样子就转化出来了对偶问题:

    给定一棵树,每条边可以被标记若干次,有若干个限制,每次限制一条链上所有边被覆盖的总次数不能超过一个给定值,现在要最大化边被覆盖的总次数。

    原问题似乎并没有那么好解决,但是对偶问题可以很容易的使用贪心解决。

  • 相关阅读:
    BZOJ4245: [ONTAK2015]OR-XOR(前缀和)
    [HDU 4433]locker[DP]
    近期刷题的c语言总结。
    《BackboneJS框架的技巧及模式》(4)完结篇
    x+2y+3z=n的非负整数解数
    [置顶] 程序员看婚姻
    BNU29368:Check the Identity(栈)
    Python解决codeforces ---- 1
    带你走进EJB--MDB实现发送邮件(3)
    JIRA简介
  • 原文地址:https://www.cnblogs.com/cjyyb/p/10479092.html
Copyright © 2020-2023  润新知