P6122 [NEERC2016] Mole Tunnels
https://www.luogu.com.cn/problem/P6122
题目明显有一个匹配的问题,费用流的建模也很明显。
- 考虑当前在某个时刻,睡醒的所有鼹鼠,都有一条 的边,容量为 ,费用为 。
- 对于树上一条边 ,注意,这里是把无向边看成两条单向边。连 ,容量为无穷大,费用为 1。
- 对于一个食物,连 ,容量为 ,费用为 。
这是一个匹配模型。对于任意时刻,要求所有 的边流满。
考虑模拟 EK 去找费用流。
加入一只鼹鼠 ,那么 要流满,前面的鼹鼠 的 也流满,且一定不会退流,因为如果退流的话,总流量减少,显然是不优的,因为我们每次是找费用最低的增广路,这个总流量是会单增的。
既然总流量单增,并且一定流满,那么对于一个负环来说,是不是原先的就并不会流满啊?并且负环能提供的流量增量为 0,因为要退掉之前的流量。那么,我增量的时候,找增广路,显然只会有一条,因为 容量为 1。要求增广完网络满流,显然是不允许出现负环。
那么,我们只需要考虑 这样子的源汇路径带来的增广。
注意到,我们一定是找一条费用最低的可流路径去增广,这是不是相当于,对于 找到距离它最近的粮食的点,并流过去。并且流过去后需要注意对路径上的所有反向边的流量增加 1。
那么问题很简单了。
-
对于 找到距离它最近的粮食的点。
-
增加一条权为 的边。
-
减少一条权为 的边。
-
减少某个点的粮食。
注意到,对于第一点,我们可以大力枚举两点的 做,因为树高 ,那么就变成维护一个点,向下到粮食的距离了。
但是,减少对于某些并不满足求逆的东西来说,并不是很好做。我们考虑信息是合并上去的,这样子,我们规避了求逆这个东西。
我们发现,树的形态很特别,只有左右儿子,因此我们可以类线段树,完成对信息的合并。
接下来的东西都很常规了,就做完了。
__EOF__

本文作者:F x o r G
本文链接:https://www.cnblogs.com/xugangfan/p/17687022.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/xugangfan/p/17687022.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-09-08 记一道典题 分层图+同余系建图