费用流做题记录(一)
P4016 负载平衡问题 - 洛谷 | 计算机科学教育新生态
P4452 [国家集训队] 航班安排 - 洛谷 | 计算机科学教育新生态
P2045 方格取数加强版 - 洛谷 | 计算机科学教育新生态
P2050 [NOI2012] 美食节 - 洛谷 | 计算机科学教育新生态
P2053 [SCOI2007] 修车 - 洛谷 | 计算机科学教育新生态
P2770 航空路线问题 - 洛谷 | 计算机科学教育新生态
P3159 [CQOI2012] 交换棋子 - 洛谷 | 计算机科学教育新生态
P3356 火星探险问题 - 洛谷 | 计算机科学教育新生态
P3358 最长k可重区间集问题 - 洛谷 | 计算机科学教育新生态
P4013 数字梯形问题 - 洛谷 | 计算机科学教育新生态
P5331 [SNOI2019] 通信 - 洛谷 | 计算机科学教育新生态
网络流库
负载平衡问题
简单贪心或费用流。
贪心做法:
枚举断点进行断环成链,然后在链上贪心。正确性的话,是因为断点一定存在。
容易做到
费用流做法:
首先,算出平均值
- 若
,连 ,容量为 ,费用为 . - 若
,连 ,容量为 ,费用为 .
然后
- 连
,容量为 ,费用为 .
然后最大流的最小费用就是答案。
复杂度小常数
航班安排
按照时间个给机场建分层图(跑费用流)复杂度错误,但是,分层图中有用的节点个数只有
复杂度为
有些细节没说。
方格取数加强版
直接把走的
实现时,需要拆点。
复杂度
美食节
考虑使用厨师匹配菜,尝试使用费用流。
发现,一个初始做的第
直接建图点数
于是卡常,进行动态开点,厨师做了菜才会做下一道菜,所以可以每增广一次就判断最后一层厨师是否被经过,如果经过了,就开下一层点。
边数
动态开点 or 边
十分强大的卡常技巧。
航空路线问题
这题有🤡【小丑】 dp 做法。
费用流做法:
把一来一回看成从左到右的两条流。然后就很简单了。
复杂度
dp 做法:(没写)
还是看成从左到右的两条流。
设
暴力实现复杂度
交换棋子
负载平衡问题。
需要注意的是,一条流的开头和结尾的交换次数为
最长 可重区间集问题
如下图所示建图。
点数
通信
归并排序优化建图或主席树优化建图。可以使用网络单纯形暴力通过。
首先,把问题转化成最小权链覆盖,具体的,把每个哨站拆成入点和出点,然后前后匹配。
暴力建图边数是
对于值域,显然可以建立值域链,不过有前后连边的方向要求。
可以用归并排序优化为
归并排序的更多应用
本题是二维偏序的建图,但用扫描线要套上主席树,而归并排序就是一种更好些的做法。
此时,归并排序不止能由于三位偏序了。
类似的应用可能是分治 FFT。
网络单纯形
远快于其他费用流算法,好写,但有点长。
跑网络流没有 HLPP 快。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】