几类网络流的建模

1

区间 k k k 覆盖问题
有一些区间,选择一个区间会产生一些收益。要去每个点覆盖它的区间最多不超过 k k k 个。

一开始的想法是源点连每个区间代表的点,区间代表的点连向序列里的每个数,每个数连向汇点。发现这样无法限制题目要求,因为选择一个区间实际上对应很多边流量同时+1,网络流并不能处理这种情况,这是典型的“一对多”问题。

尝试更改建图策略,对于一个区间 [ l , r ] [l,r] [l,r],我们连边 l → r + 1 l\rightarrow r+1 lr+1,流量 1 1 1,费用 k k k i i i i + 1 i+1 i+1 连流量 INF 费用 0 的边。求 1 到 n n n 流量为 k k k 的最大费用流。实际上是用了 i i i i + 1 i+1 i+1 这条边代表了 i i i 这个数,流一条有费用的边代表选择这个区间。

证明:首先,这样跑出来的方案都是合法的,即不存在一个点被超过 k k k 个区间覆盖。然后,每一种合法方案都能被表示成至多 k k k 组不相交的区间。

2

志愿者招募
n n n 天需要志愿者,第 i i i 天需要 a i a_i ai 名。共有 m m m 种志愿者,第 i i i 种志愿者可以工作第 s i s_i si t i t_i ti 天,每个人花费 c i c_i ci 元。求最小费用,满足每一天的需求。

这是典型的“一对多”问题。我们尝试用 1 的流量去覆盖 s i s_i si t i t_i ti 天。类似上一题,源点连 1,流 INF 费 0, i i i i + 1 i+1 i+1 连流 INF-ai 费 0, n n n 连汇点流 INF 费 0, s i s_i si t i + 1 t_i+1 ti+1 连流 INF 费 c i c_i ci。流一条 s i s_i si t i + 1 t_i+1 ti+1 的边相当于雇佣了一种这样的人,INF-ai 的边限制了跨国这一天的流量至少为 a i a_i ai

上面两个问题的共性是“一对多”,解决方法是把一些东西“串成串”,用 1 的流量覆盖一段区间。

3

养猫
你养了一只猫,为了让它快乐地成长,你需要合理地安排它每天的作息时间。假设一天分为 n 个时刻,猫在每个时刻要么是吃东西,要么是睡觉。在第 i 个时刻,假如猫是去吃东西,那么它能获得愉悦值 e i e_i ei,假如是去睡觉,那么能获得的愉悦值为 s i s_i si
猫要成长,不仅仅需要快乐,还需要健康的作息。经过研究,对于每一个连续的长度为 k k 的作息区间,即所有的时刻区间 [ i , i + k − 1 ] , 1 ≤ i ≤ n − k + 1 [i, i + k - 1], 1 \leq i \leq n-k+1 [i,i+k1],1ink+1,猫都要至少有 ms \text{ms} ms 的时刻用来睡觉, me \text{me} me 的时刻用来吃东西,这样猫才能健康成长。

现在你想合理地安排一天中的这 n n n 个时刻,使得猫在能健康成长的前提下,获得尽量多的愉悦值。

注意到:给定一个序列,求是否每个长度为 k 的子区间的和都大于某个 M,等价于对于每个数 a_i,把 a i , . . . , a i + k − 1 a_i,...,a_{i+k-1} ai,...,ai+k1 同时加上 a i a_i ai,最后看是否每个数都大于 M。

显然的想法是先每天都睡觉,然后把某些天改成吃东西。根据上面说的,如果我们改了某一天就把它后面的 k 天+1,那么限制等价于操作完后每一天+1的数量在一个区间里。

我们把天串一串,i向i+k连流量1费用e-s,表示把这一天改为吃东西,覆盖后面k天。i向i+1连k-ms-me,源点连向1流量k-s费用0,n向汇点流量k-s费用0.

在外面跨过 i,i+1 的边的数量就是+了多少1.它的上界由总流量限制,下界由 i,i+1 的流量限制。


4

切糕
n × m n\times m n×m 的棋盘,每个位置设置一个高度 0 &lt; h i , j ≤ R 0&lt;h_{i,j}\leq R 0<hi,jR,代价为 c o s t i , j , h i , j cost_{i,j,h_{i,j}} costi,j,hi,j。要求满足每对边相邻的格子高度差的绝对值小于等于一个常数。求最小代价。

这道题建模比较新颖。每个格子只能选择一个高度,因此我们把每个高度建一个点,串一串,割掉 i i i i + 1 i+1 i+1 的边表示选择 i i i 这个高度。问题转化成了最小割。考虑相邻高度差的限制,如图:在这里插入图片描述
每个高度 h h h 向周围 h − D h-D hD 连 INF,这样如果割掉了绿边,那么红边及下面的边是不能选的。

这类问题可以看作有一些变量,每个变量有一些选择。可以把选择与割对应起来,转化成最小割问题。


5

文理分科
班级是一个 n × m n\times m n×m 的网格图,每个人选文有一定收益,选理有一定收益,一个人和周围的四个人同时选文有一定收益,同时选理有一定收益,求最大收益。

这类题称作“二元关系网络流”,如图:
在这里插入图片描述

感觉讲的听清楚。待补。

5

一棵树 m m m 对点,每次可以花费 1 1 1 的代价给一条边标记或者给一对点标记。满足每对未标记点的路径上的所有边都被标记。
n , m ≤ 10000 n,m\leq 10000 n,m10000
要么点对被覆盖,要么之间所有边被覆盖。建二分图,左边是点对,右边是边,每个点对向它们之间所有的边。求最小割即可。向树上的一条路径连边,可以倍增或者树剖优化。

6

给定一个由单位正方体组成的物体的俯视图,求最多拿掉多少正方体使得三视图不变。
n , m &lt; = 100 n,m&lt;=100 n,m<=100

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值