神秘六字算法

广义串并联图。参考了 2019 吴作同的集训队论文。学艺不精。实际上我也只写过基础应用。

广义串并联图的定义:无向连通图,满足不存在同胚于 \(K_4\) 的子图。形式化地,图中不存在四个互不相同的点 \(a,b,c,d\),满足存在两两之间的六对边不交路径。

对广义串并联图存在三种基本操作。

  • 去一度点。对于一个一度的点,直接考虑缩进去这个点对其相连点的影响。
  • 缩两度点,相当于将两条串联的边缩成一条。
  • 叠合重边。

可以证明,一张图是广义串并联图,当且仅当可以通过上述操作最终得到一个点。

思考:如果图不是广义串并联图,进行上述操作直到无法操作后,得到的图存在什么性质。

首先每个点度数都 \(\ge 3\)。这意味着 \(2m=\sum deg\ge 3n\)

不妨考虑 \(m-n\) 在操作中的变化,不难发现只会变小。

而若图非常稀疏,例如 \(m-n\le k\),其中 \(k\) 是一个较小的常数;联立上述不等式可以得到,最终会得到一张 \(|V|\le 2(m-n)\)\(|E|\le 3(m-n)\) 的图,而可以考虑直接在这张图上进行一些暴力算法。

对于静态广义串并联图或稀疏图问题,可以直接维护上述操作求图上问题的答案。

例题:SNOI2020 生成树。是一个板子题目。题解。还有一个是 HNOI/AHOI2018 毒瘤。

然后维护的形式大部分时候可以用广义矩阵加法/乘法表示。

考虑动态修改如何进行:我们发现广义串并联图每个操作之后的边其实在表示原图若干边的运算过程:即,你可以找到一个表达式状物来做它。

而对表达式建出表达式树之后,可以方便地用动态 dp 的方式维护带修过程。不过我不会写,细节略多。然后就是动态 dp 的写法了:你当然可以写什么全局平衡做到 1log 啥的,因为如果你真的封装了一个矩阵会导致常数飞天巨大,那是不是就有点那啥。

哦,忘说了,如果你打了最近一场 CF,就会发现那个 F2 在干的事情和广义串并联图非常相似,但是你会发现那是一个有向图,然后每个点会有两条边,一条指向别人,一条被别人指向,还是 dag。呃,换句话说你可以理解为,一棵正着的内向树和一棵倒着的外向树并起来;然后这张图也是可以广义串并联操作的,就这样。

posted @ 2025-11-07 20:09  Erine  阅读(6)  评论(0)    收藏  举报