ABC306G 与 CF1835D 的思考

Posted Zesty_Fox

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABC306G 与 CF1835D 的思考相关的知识,希望对你有一定的参考价值。

两道题似乎都涉及了一个经典模型:

在一张有向图上,给定起点 \\(s\\) 和终点 \\(t\\),询问 \\(s\\)\\(t\\)\\(t\\)\\(s\\) 是否均存在一条长度 \\(=L\\) 的路径(\\(L\\) 是一个 \\(\\ge n^3\\) 的数)。

首先 \\(s\\)\\(t\\) 必须在同一个 SCC 内(考场上没看到互相可达直接以为不可做)。

考虑取出这个 SCC 的任意一颗生成树,则有定理:

设所有非树边 \\((u,v)\\)\\(|dep_u+1-dep_v|\\)\\(\\gcd\\)\\(g\\),则 \\(\\forall x \\in \\textSCC,\\exists L, \\mathrms.t. \\forall l \\ge L \\and g|l\\),存在包含 \\(x\\)、长为 \\(l\\) 的环。

证明:设当前所有包含 \\(x\\) 的环的 \\(\\gcd\\)\\(g\\)

  • 若所有 \\(dep_u+1 \\equiv dep_v \\pmodg\\),显然从 \\(x\\) 出发,每走一步在模 \\(g\\) 意义下深度一定 \\(+1\\),回到 \\(x\\) 时肯定长度为 \\(g\\) 的倍数。
  • 若存在 \\(dep_u+1 \\not\\equiv dep_v \\pmodg\\),则一定存在长度不是 \\(g\\) 的倍数的环。根据裴蜀定理,\\(g\\) 可以变为 \\(\\gcd(g,l)\\)\\(l\\) 为这个环的长度),可以变得更小。

    为什么一定存在这种环:设 \\(rt\\) 为生成树的树根,若 \\(x\\)\\(rt\\) 存在长度 \\(\\not\\equiv dep_rt-dep_x \\pmodg\\) 的路径,则 \\(x \\to rt \\to x\\) 就符合要求;对 \\(u,v\\) 均同理。于是可以构造 \\(x \\to rt \\to u \\to v \\to rt \\to x\\) 这样的环,除了 \\(u \\to v\\) 的一段其它都符合 \\(s \\to t\\) 所有路径长度模 \\(g\\) 意义下等于 \\(dep_t-dep_s\\) 这一性质,所以这个环长度一定不是 \\(g\\) 的倍数。

根据证明过程,可以扩展这个定理:

\\(\\forall x,y \\in \\textSCC,\\exists L, \\mathrms.t. \\forall l \\ge L \\and l \\equiv dep_y-dep_x \\pmod g\\),存在以 \\(x\\) 为起点、以 \\(y\\) 为终点、长为 \\(l\\) 的路径。

证明过程类似。

以上是关于ABC306G 与 CF1835D 的思考的主要内容,如果未能解决你的问题,请参考以下文章

三个线程交替打印ABC100次问题思考

CF1146F Leaf Partition 题解

CF-div2-620-D. Shortest and Longest LIS 贪心,双指针

由 '' in 'abc' return True 引发的思考----Python 成员测试操作

CF802CHeidi and Library

CF-div3-611-F. DIY Garland 优先队列 构造树