现在的位置: 首页 > 综合 > 正文

ZOJ 2071 Technology Trade

2013年08月15日 ⁄ 综合 ⁄ 共 2699字 ⁄ 字号 评论关闭

与SOJ 3109一样的题目,不过这题要求高些,还要输出选择方案

 

对于每个元件component,源点向它连一条容量为它代价的边,对于每件产品product,向汇点连一条容量为它价值的边

 

这样求得最小割后,如果(i,t)满流,一定为割边,它代表的产品肯定不选,如果(s,i)满流,不一定为割边,但割边若是(s,i)这种形式,它一定满流,且i代表的元件肯定要选

 

可以这么理解,如果(i,t)满流,则说明产品i的利润为小于等于0,没有利润了,因为制造它的元件的代价把利润抵消完了,与它相关的元件中,与源点相连的边可能满流,或者不满流,但只要有一条不满流,则这些边中没有一条会是割边,因为只要有一条不满流,在残余网络中,源点可以到达这件产品所代表的点,通过这个点又可以到达那些与它相关的且与源点相连的边满流的点(即生产它需要的元件表示的点);反之,如果(i,t)没有满流,则它代表的产品能产生利润,且源点到生产它需要的那些元件顶点的边都满流,这些边都为割边

 

于是,最小割的割边中,如果与s相关,则对应的元件会被购买,如果与t相关,则该产品不会被制造

 

C[S,S']=Sum(i)+Sum(j),i为被购买的元件,j为不会被制造的产品

 

令Total为所有产品的价值和,则Total-Sum(i)-Sum(j)=Total-C[S,S'](最小割的容量),即为最大利润

 

最后输出结果时,先找出哪些产品需要被制造(它与汇点的边未满流),然后找出制造它需要的元件即可(与源点的边满流且与被制造的产品相关联)

 

第一次在ZOJ上做题,好多编译错误,唉。。。

 

代码:

 

 

抱歉!评论已关闭.