P1344 [USACO4.4]追查坏牛奶Pollutant Control

一道网络流初学者的好题。

首先,我们发现以卡车的路线为边,仓库为点,构成了一张图。

然后我们又看到需要花最小代价使公司和零售商不连通。

那么我们很容易得到此题的模型:

以公司为源点,零售商为汇点,求出图中的最小割大小、最小割边数。

第一问,直接上著名的定理:

最大流 = 最小割 \text{最大流}=\text{最小割} 最大流=最小割

任何学过网络流的人都应该知道吧

于是直接上 D i n i c Dinic Dinic秒掉第一问。

然而我们发现第二问有些棘手:似乎没有快速求最小割边集的算法?

别急,我们依然从那个著名的定理入手。

最大流 = 最小割 \text{最大流}=\text{最小割} 最大流=最小割

显而易见的是,当最小割中所有边权均为 1 1 1时,最小割的大小等于最小割的边数。

但此题边权并不是 1 1 1,所以感性理解一下,要想办法把 1 1 1在不影响第一问答案的情况下附加到边上。

而附加信息其实有套路:

当我们使用 p b _ d s pb\_ds pb_ds中的平衡树时,为了实现重复元素的功能,我们将数据存在高位,而低位存一个时间戳。

于是新技能 g e t get get:将原数据 x x x乘一个常数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值