专栏文章
P3980 [NOI2008] 志愿者招募 题解
P3980题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mimz4kbw
- 此快照首次捕获于
- 2025/12/01 17:55 3 个月前
- 此快照最后确认于
- 2025/12/01 17:55 3 个月前
大部分题解只讲解了本题的建图方式并给出解释,少有题解真正讲明白这种看似奇妙建图的来源。
本题解将尝试不通过线性规划的方式,使用网络流语言讲明白本题的建图推导过程,并给出其背后的逻辑。
如果我们不满足于认识现有的结果,就要发掘出问题背后的脉络, 认识到看起来“神机妙算”的证明,拆掉之前的脚手架长什么样。Carl Friedrich Gauss: “凡是有自尊心的建筑师,在瑰丽的大厦建成之后,决不会把脚手架留在那里。”
下文简记一条 流量为 ,费用为 的边为 。下文所有 指一个足够大的整数,取其为 。
令第 天被覆盖了 次,题目限制即 ,等价于 。
使用流量取 的特性刻画 ,那么将所有天对应的边串在一起即可描述。具体地,令第 天对应点 , 的流量为 ,。那么我们要求最大流 。
考察选择一个人 对流量的贡献。不妨考虑一种简单情况:。
由于一条边的流量可以拆分为并联的多条边的流量之和,我们可以将原来流量为 拆为一条 的边和一条 的边,其中 在 的情况下就是我们选了多少次这个人。
我们自然想到额外连一条 流量为 ,费用为 的边。这样取一个人这条边流量 ,并造成 的贡献。
实际上这是可以推广的。对于一个人 ,它会贡献点 的边的流量。由于将之前所述两条相邻 的边合并为一条 是等价的,我们可以想到连一条 的边。注意这里要覆盖 对应的所有边,包括 的边。
由于我们不能连流量为 的边,可以将其整体 ,即连流量为 的边,要求最大流 。
我们只需要在汇点处限制最大流 ,即 流量为 ,那么费用流算法就会在保证最大流取到 的情况下,使总费用尽量小,这是符合我们的要求的。
总结来看,建图:对于每天 ,对于每个人 ,源汇点连边 。使用费用流算法即可解决。
由此,我们看到了,本题中两个反常的建图方式的来源:
-
链式建图:为了刻画 ,将边串在一起。
-
一个人连一条跨过区间的边:实际上利用了流量的可拆分性和可合并性进行转化。即一条边的流量可以拆分为并联的多条边的流量之和;连一条跨过一段区间的、流量为 的边等价于将区间内的所有边流量加上 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...