题意:一个公司有n个可以建造通讯战的地方,建造成本分别为pi,然后第i个公司会选择使用通讯站ai与bi,使用费用是ci,然后问这个通讯公司怎么建站能够获利最大。(净获利=总收益-总成本);
网上看到一篇题解,直接说这是个最小割,求最小割然后总收益-最小割就是了。这种题解就是一点用也没有,为什么是最小割,总得解释解释吧,撂下结论就跑了,这种题解写来何用。
之后查了一篇国家集训队的论文《最小割模型在信息学竞赛中的应用》才明白原来是最大权闭合图转的最小割,至于为什么能转成最小割,自己去看论文的证明吧。
论文中已经指出所谓闭合图就是闭合图中的点的后继也在这个闭合图中。而闭合图是反映事物间必要条件的关系的,也就是说一个点是它后继的必要条件(不知道必要条件的自己百度),也就是说要有这个点,它的后继点也要都存在。然后回到该题,如果一个公司想要用通讯站的话,那么就要先建站ai与bi,那么这就是一个必要条件,也就是说该公司就可以跟站ai和bi分别连两条有向边,然后该公司这个点的权是ci,两个站的点的权职是-pi,很显然,求最大权闭合图就是我们要找的最大净收益。
然后最大权=正的点权和-最小割。这个最小割的求法是,建立一个源点s,s与正权点连边,边权是该点的权值,建立一个汇点t,t与负权点连边,边权是该点权值绝对值,其他边都是无穷大(取个inf就行了),然后套模板dinic,sap都行,求个最小割就好了。还是那句话,为什么这样转换去看论文,我只搬运做法。
其实就是个模板题,代码就不写了。
版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/hitwhacmer1
时间: 2024-11-09 22:52:24