专栏文章
联合省选 2025 D2T2
P11834题解参与者 10已保存评论 9
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @miq2veyz
- 此快照首次捕获于
- 2025/12/03 22:03 3 个月前
- 此快照最后确认于
- 2025/12/03 22:03 3 个月前
记号: 点的全集。
对于 C 性质, 合法充要于存在一个点 使得 在 上可达所有点。
先来考虑更为简化的一个情况:必须 在 上可达剩余所有点才认为合法,该情况该如何解决?
可以做类似 连通无向图计数 的操作:设 表示 导出子图内的边按照所述方式随机是否保留,那么 可达 内所有点的概率,这里我们认为只有 时 才有意义。那么考虑不合法的情况必定是 只可达 的某个真子集 ,容斥减去这些情况即可。记 为 两个集合间的连边数(默认 ),转移应是 。
但事实上限制是 “存在一个点 ”,假设这样合法的点 构成集合 。那么在 上, 导出子图就应强连通,并且所有不在 内的点必然不能有边指向 内的点。除此之外要求 内所有点可达所有 ,这部分的概率可以用上述 DP 计算,只需改为认为只有 时 才有意义即可。这三部分的概率都是独立的可以分别计算出后相乘,对所有 求出 导出子图强连通的概率与 主旋律 的做法一致。这样我们确实得到了一个 C 性质能跑的做法,但做 的 DP 的部分太慢了。 C 性质
观察这份代码, 的转移可以视作在有向图上游走:对于 , 有一条权重为 的边,记一条路径的权值为其上所有边的边权之积。对于 而言,希望求出的值其实是所有起点 满足 ,且终点为 的 的所有路径的权值和。倒过来设 为 所有路径权值和,可以 求出所有 ,再做一次超集和即可求出需要的值。 C 性质
接下来考虑原问题,对于一颗选定的 的外向生成树,它和 的最小生成树边权和相同实际上当且仅当对任意的 ,连上所有边权 的所有边得到的图的连通性,与连接外向生成树边权 的所有边并视有向图为无向图后得到的图的连通性是完全一致的。这里 的连通性完全一致定义为 , 在 内连通充要于 内连通。这一性质如果了解 最小生成树计数 的做法就不难看出。
知道这一点后,该如何设计出一个易于改写为计数的判断 是否合法的算法?设 只保留 内所有边权 的边后得到的图, 为 的某颗合法外向生成树只保留边权 的边后得到的图。由于上述性质,, 一定形成与 弱连通性一致的外向森林(外向树删去一些边后得到外向森林)。且从 ,考虑 的某个连通块是由一些 的连通块合并而来,相应的 内点集一致的弱连通块一定由 内原来的对应的外向森林(设有 颗外向树)合并而来,有恰 个原来的外向树的根被一条 内边权为 的边指向。
既然这样,不难看出实际上只有每个外向树的根是重要的。要对 找合法外向生成树,在固定 时只需知道 的每个连通块内,以这个连通块内的每个点为根是否存在满足上述过程的外向生成树。初始 时 没有边,所有点都合法。当 时,若 合并了一些连通块 , 合法,当且仅当它之前就合法,且可以选出 中一些权值为 ,指向的点也之前合法的边,使得将 整体视作一个点后,选出的边在 个点的图上是一颗以 为根的外向树。最后只要有至少一个点合法 就合法。
新问题与 C 性质是非常类似的,但区别在于在新问题上即使是权值为 的会被考虑的边,其也只在指向的点是之前合法的点时有意义。增量维护 ,设 为 所在的 的连通块中 恰是合法点集的概率, 的值仅在 所有点在 中属于同一连通块时才有意义。 时需要计算新的 ,将 C 性质的做法移植过来即可,区别主要在于如果将一个 中的连通块视作一个点的话,这个点带有一些 “属性” 是这个连通块之前的合法点集,而这个 “属性” 会影响转移系数(因为只有指向的点是合法点的边才有意义) 。细枝末节的地方建议 看代码。
最后是时间复杂度的问题,容易理解复杂度不会高于 因为实际上连通性只会发生 次合并,而每次合并的转移只是在做 C 性质是 的。但实际上加一个小优化:若点 所在的连通块在 中没有发生变化,所有包含 的 其实保持不变,于是所有包含 的状态都无需考虑。那么合并总点数为 的连通块便只消耗 时间,考虑 显然是 的。如果要分析得再仔细一些的话,上面给出的代码其实是 的。
相关推荐
评论
共 9 条评论,欢迎与作者交流。
正在加载评论...