USACO算法系列三十九——milk6(续)

    别人提供了一个解决方案,http://dementrock.blog.com/2009/06/usaco-442-pollutant-control/

    很明显地,这是一个最小割的模型,设每边的权值为原始权值,则最大流的值就是最小割的容量,即最小损失。现在有两个问题:停止的线路数,使开始输入顺序最小。
     为解决这两个问题,可将每边的权值修改为500000+i+500000*1001*c,这个式子有什么用呢?首先,每边的权值都加上500000,那么最大流(maxflow%(500000*1001))/500000就是停止的线路的数量,取500000的原因是500000>(0+999)*1000/2,即最大情况下0~999的i的和,否则可能由于i的值而使结果偏大。i项的含义就很明显了,为使输入顺序最小。最后一项中的1001则是因为最多有1000条边,所以500000*1001*c > 500000*1000,这三项分别独立,从而得出结果。

    没有想明白。

    而我想的深度遍历的情况,也超时了。

    运行结果如下:

     有空再回头想想这道题吧。啃了三天都没啃动。悲剧!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值