费用流做题记录(一)

P4016 负载平衡问题 - 洛谷 | 计算机科学教育新生态

P4452 [国家集训队] 航班安排 - 洛谷 | 计算机科学教育新生态

P2045 方格取数加强版 - 洛谷 | 计算机科学教育新生态

P2050 [NOI2012] 美食节 - 洛谷 | 计算机科学教育新生态

P2053 [SCOI2007] 修车 - 洛谷 | 计算机科学教育新生态

P2770 航空路线问题 - 洛谷 | 计算机科学教育新生态

P3159 [CQOI2012] 交换棋子 - 洛谷 | 计算机科学教育新生态

P3356 火星探险问题 - 洛谷 | 计算机科学教育新生态

P3358 最长k可重区间集问题 - 洛谷 | 计算机科学教育新生态

P4013 数字梯形问题 - 洛谷 | 计算机科学教育新生态

P4015 运输问题 - 洛谷 | 计算机科学教育新生态

P5331 [SNOI2019] 通信 - 洛谷 | 计算机科学教育新生态

网络流库

网络流库 - zhiyin123123 - 博客园

负载平衡问题

简单贪心费用流

P4016 负载平衡问题 - 洛谷

网络流做法 记录详情 - 洛谷

贪心做法

枚举断点进行断环成链,然后在链上贪心。正确性的话,是因为断点一定存在。

容易做到 O(n2)

费用流做法

首先,算出平均值 A,设源点为 S,汇点为 T,建立点 1,2,,n,然后

  • Ai>A,连 Si,容量为 AiA,费用为 0.
  • Ai<A,连 iT,容量为 AAi,费用为 0.

然后 i,j,i+1j (modn)

  • ij,容量为 inf,费用为 1.

然后最大流的最小费用就是答案。

复杂度小常数 O(n3)SPFA + EK).

航班安排

P4452 [国家集训队] 航班安排 - 洛谷

记录详情 - 洛谷

按照时间个给机场建分层图(跑费用流)复杂度错误,但是,分层图中有用的节点个数只有 O(M) 个,所以可以暴力两两连边,正确性由数据范围的 ti,jti,k+tk,j,fi,jfi,k+fk,j 保证。

复杂度为 O(N3K)

有些细节没说。

方格取数加强版

P2045 方格取数加强版 - 洛谷

记录详情 - 洛谷

直接把走的 k 次看成 k即可。

实现时,需要拆点。

复杂度 O(kn5A).

美食节

P2050 [NOI2012] 美食节 - 洛谷

记录详情 - 洛谷

考虑使用厨师匹配菜,尝试使用费用流

发现,一个初始做的第 i 道菜代价会 ×i(拆贡献),所以建立分层图,以厨师编号和已做菜数量建立。每个分层厨师都要和所有菜的节点连边。

直接建图点数 Θ(mp+n),边数 Θ((mp+n)n)边数太大,费用流跑不动。

于是卡常,进行动态开点,厨师做了菜才会做下一道菜,所以可以每增广一次就判断最后一层厨师是否被经过,如果经过了,就开下一层点。

边数 Ω((n+m+p)n),根本卡不掉。

动态开点 or 边

十分强大的卡常技巧。

航空路线问题

这题有🤡【小丑】 dp 做法。

P2770 航空路线问题 - 洛谷

费用流做法 记录详情 - 洛谷

费用流做法

把一来一回看成从左到右的两条流。然后就很简单了。

复杂度 O(nm)O(n3))。

dp 做法:(没写)

还是看成从左到右的两条流。

f[i][j] 表示两条流目前分别走到了 i,j 节点,接下来只能往 max{i,j} 之后转移。正确性显然。

暴力实现复杂度 O(n3)

交换棋子

负载平衡问题。

P3159 [CQOI2012] 交换棋子 - 洛谷

记录详情 - 洛谷

需要注意的是,一条流的开头和结尾的交换次数为 1,中间为 2

最长 k 可重区间集问题

P3358 最长k可重区间集问题 - 洛谷

记录详情 - 洛谷

如下图所示建图。

by xuxinyu 12260.png (612×399)

点数 O(n),边数 O(n),最大流 O(k),复杂度 O(n2k)SPFA + EK)。

通信

归并排序优化建图或主席树优化建图。可以使用网络单纯形暴力通过。

P5331 [SNOI2019] 通信 - 洛谷

归并排序优化建图 评测记录 - 洛谷

网络单纯形暴力建图 记录详情 - 洛谷

二合一 记录详情 - 洛谷

首先,把问题转化成最小权链覆盖,具体的,把每个哨站拆成入点出点,然后前后匹配。

暴力建图边数是 O(n2) 的。

对于值域,显然可以建立值域链,不过有前后连边的方向要求。

可以用归并排序优化为 O(nlogn),使用主席树同样可以。

归并排序的更多应用

本题是二维偏序的建图,但用扫描线要套上主席树,而归并排序就是一种更好些的做法。

此时,归并排序不止能由于三位偏序了。

类似的应用可能是分治 FFT

网络单纯形

远快于其他费用流算法,好写,但有点长。

跑网络流没有 HLPP 快。

posted @   zhiyin123123  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
目录侧边栏

qwq

点击右上角即可分享
微信分享提示