把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

网络流题目选讲 黄洛天

CF1416F Showing Off

显然连成基环树森林。

定义局部最小值为一个位置小于等于其上下左右四个位置。如果一个点不是局部最小值,则找一个比其小的位置,指向这个位置然后计算这个点应该的权值即可。

否则,说明这个点一定在环上。

一个观察是,这是一个网格图,可以黑白染色,并且像这种每次上下左右走一步走出来的图一定是偶环。而一个偶环长度如果 \(>2\),则拆成若干个 \(2\) 一定不劣,因此我们需要做的就是求一个匹配类似物。

不妨定义黑点为左部点,白点为右部点,并且在权值相同的相邻点之间连边。从源点向黑点,白点向汇点连上界为 \(1\),下界为这个点是否是局部最小值的边,然后跑上下界可行流即可。构造方案只需要看每条中间边是否被经过,时间复杂度 \(O(nm\sqrt{nm})\)

submission

CF1250K Projectors

先将所有时间离散化成 \(O(n)\) 个时间,然后计算每个时间所需的投影仪个数。

如果我们已经分配完了普通投影仪,则高清投影仪能分配的充要条件是每个时间所需的投影仪个数都不超过 \(x\)。这个可以通过贪心构造性证明。

而一个普通投影仪能串起一系列不交的研讨会,并使这些区间所需的投影仪个数都 \(-1\)

我们将研讨会看成一次跳跃,将一个普通投影仪从 \(p_i\) 跳跃到了 \(q_i\),其余时间就依次经过每个时间,则每个时间被经过的次数有一个上界,可以网络流判定是否 \(y\) 个流量都能流完。

普通投影仪方案的构造可以考虑每条跳跃边是否被经过。高清投影仪的构造直接贪心选最早的投影仪即可。

时间复杂度不超过 \(O(Ty(n+m))\)

submission

CF925F Parametric Circulation

按照上下界网络流的方法,先预先分配上界的流量,然后从源点和汇点补流,最后判断最大流是否等于所有补的正流之和。

考虑将最大流转化成最小割,那么整个最小割关于 \(t\) 的函数是一个上凸壳,这是由一系列直线取 \(\min\) 得到的,而所有补的正流之和是这些直线中的一条,因此有解的 \(t\) 是一个区间。

对于一个确定的 \(t\),我们跑出最小割以后,可以算出最大流在这个点的导数。而上凸壳导数是递减的,因此可以二分出导数等于 \(\sum a_i\) 的两端点,然后判定是否存在循环流即可。时间复杂度 \(O(\operatorname{Dicnic}\log \frac{1}{\epsilon})\)

submission

CF513F Scaygerboss

首先 \(|a-b|\not=1\) 无解,然后将通配符补给小的一边。

二分答案 \(mid\),然后建立一张网络流图:将网格上每个点拆成出点和入点,中间连流量为 \(1\) 的边限制每个格子上只能选一次。源点向红色连流量为 \(1\) 的边,蓝色向汇点连流量为 \(1\) 的边,红色和蓝色向能走到的点连流量为 \(1\) 的边,然后跑最大流看是否等于 \(a\) 即可。

因为这张图上每个点的出度和入度有一个为 \(1\),因此一次最大流的复杂度为 \(O(|E||V|^{\frac{1}{2}})=O((nm)^{\frac{5}{2}})\),总复杂度 \(O((nm)^{\frac{5}{2}}\log W)\)

submission

posted @ 2024-05-24 20:01  275307894a  阅读(83)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end