Live2D

md,忍不了了,一拳把网络流打爆😡😅

Starry Night Camping

link

Solution#

sb题,可以发现如果不合法一定是存在路径类似于 (1,1)(1,0)(0,0)(0,1) (模 2 意义下的),那么我们直接每个点拆开,两个点之间连边为点权,然后不同层之间相邻的连边直接跑最小割就好了。

[CQOI2017]老C的方块

link

Solution#

也很蠢,跟上面的差不多。按下图编号即可。

可以发现不合法路径一定可以表示为 1234 的,所以跟上面一样拆点跑最小割即可。

CF1288F Red-Blue Graph

link

Solution#

我们发现红点可以理解为红边-蓝边 1,蓝点可以理解为蓝边-红边 1。那么我们把红边、蓝边都理解为流,假设红边为出边,蓝边为入边,那么红点即是入度-出度 1,蓝点则相反。

那么我们可以用上下界有源汇费用流解决,建图如下:

(Linux下画图真的很麻烦就直接用一下湘妹的吧😨😅)

可以看出这样建图不会一条边即红又蓝。

CF802O April Fools' Problem (hard)

link

Solution#

其实可以看出有一种暴力跑费用流的方法,即建二分图,然后左边往编号比它大的点连。

转成费用流之后就可以看出这玩意关于 k 实际上是一个凸包(这个比较显然),那么我们就可以用 wqs 二分。那么问题就是如何算最优方案。这玩意可以直接反悔贪心。所以就可以做到 Θ(nlog2n)

不过似乎有直接模拟费用流可以做到 Θ(nlogn),但是感觉不如 wqs 二分好写。

【UNR #1】奇怪的线段树

link

Solution#

挺有意思的。

可以看出我们真正关心的是是覆盖底部的节点,因为它们被覆盖,则祖先一定都能被覆盖。

然后我们可以发现的两个性质是:(右儿子是指是父亲的右儿子的节点,左儿子同理)

  1. 一个区间在线段树上会被拆成连续的右儿子和连续的左儿子。

  2. 任意右儿子左端点都不相同,左儿子同理。


那么我们其实相当于可以把一些节点串起来一起询问。具体来说,对于 [li,ri] 的右儿子,lj=ri+1 的节点 j 可以跟 i 拼在一起,对于 [li,ri] 的左儿子,lj=ri+1 的左儿子可以拼在一起。那么这个问题我们就可以用有源汇上下界最小流解决,即对于每个节点拆点,对于必须覆盖的节点两个点之间流量下界为 1

但是这样显然第 1 类边会爆炸,第 2 类边是 Θ(n) (根据性质 2 可以得出)。但是注意到我们完全可以对第 1 类边优化建图。所以就解决了。

复杂度据说是 Θ(n2) 的?不太会分析这种网络流建图的复杂度。不过似乎有贪心可以做到线性的。

[BJWC2018]Kakuro

link

Solution#

虽然不是太难,但是这个shit题面让我直接看题解了(指读错题了)。

我们其实不难构造出一个合法解,即空位都填 1,然后线索都填它所控制的空位个数。注意到一个重要限制是保证一个位置一定能同时被两个线索控制。那么我们可以考虑把线索拿出来按横纵分成二分图,然后对于一个线索而言,如果原来是 x,现在是 y,改变所需权值是 v,如果 xy,那么有 yx 是可以用 v 去改回去的,然后我们还可以用 v 让它往 x 上面继续增加。

然后对于格点考虑,那么即是控制它的两个线索同时更改,那么我们可以把这个视作一条边,然后连边跟上面一样即可。

因为我们只是需要最小费用可行流,所以当 cost 0 的时候退出即可。

不过这样建边似乎不能处理不能更改权值的点,其实可以发现把权值设为 即可,这样它更改一定不优,最后判一下无解即可。

posted @   Dark_Romance  阅读(329)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
CONTENTS