22年牛客多校第三场(F的证明

Posted 吃花椒的妙酱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了22年牛客多校第三场(F的证明相关的知识,希望对你有一定的参考价值。

F题
题意:给定一个无向图,每次询问两点x, y,求是否存在一个n的排列,使得第一个元素为x,最后一个元素为y,且排列的任意一个前缀、任意一个后缀都连通。
解法
(发现还不会点双,赶紧入门了一下图论555
不难想到割点相关的东西,不过只是部分东西qaq
此题应该有点双性质入手
乱分类讨论一下
如果uv在同一点双,由点双性质,删任意点都能保持联通,所以直接yes。
如果uv在不同点双,且一共两个点双且相邻。(先不考虑不连通情况)。
也是可以构造排列 p 1 p 2 . . . p n p_1p_2...pn p1p2...pn的,其中 p 1.. p i p1..pi p1..pi属于一个点双, p i + 1 . . . p n p_i+1...pn pi+1...pn属于另一个, u = p 1 , v = p n u=p_1,v=p_n u=p1,v=pn
如果有更多点双考虑怎么构造,用点双缩点后,是一棵树。因为uv必须在数组的头尾,这棵树必须是链的形式,uv所在的点双必须在链的头尾。结论感觉挺好想的。
反证法乱证下这棵树是条链:
假设不是链,那至少有三个叶子,设uv所在的点双分别为U,V(U≠V),另一个叶子为T。不妨设U与T的lca为LCA,我们先将UV的路径构造到排列p中,
p 1 . . . p i 对应的是 U − > L C A 这条路径上的点双 p_1...p_i对应的是U->LCA这条路径上的点双 p1...pi对应的是U>LCA这条路径上的点双 p i + 1 . . . p n 对应的是 U − > L C A 这条路径上的点双 p_i+1...p_n对应的是U->LCA这条路径上的点双 pi+1...pn对应的是U>LCA这条路径上的点双,(省略处不代表是一串连续的下标)
此时还剩T->LCA这条路径上的点双没加入到排列中,考虑如果路径中只有T和LCA两个点,怎么去构造。
由于一个点可能同时属于多个点双,假设点双LCA中连接U,连接T的那个点(LCA,U,T是一个点集!)同时属于LCA,U和T(但是缩点的时候只能暂时被放在一个集合里,假设现在在LCA这个集合),因为这种情况能增加点双之间的连通性,从而更容易构造排列(表达能力不佳qaq),我们设这个关键点为k点。

现在U到V这条路径已经安置在排列中了,考虑加入T。考虑让排列的前缀保持连通性,那一个最优方法就是加入k后,就去放T里的点,假设k后面接上一个T中的点q,我们再看排列后缀,此时后缀V到T条路径是不连通的,因为k在q前面!!!
那么推理到更坏情况更构造不出来了!
证毕

如果uv所在的点双在头尾的话,还要特判一下uv是割点的情况。毕竟以上只能保证构造出uv分离的排列,还要保证uv间的连通性。
注意特判n=2的情况,始终是yes。

以上是关于22年牛客多校第三场(F的证明的主要内容,如果未能解决你的问题,请参考以下文章

Math(牛客多校第三场)

22年多校第三场(F的证明

牛客2018暑假多校第三场A PACM Team(01背包+纪录路径)

2022牛客多校第二场CDE

2022牛客多校第二场CDE

2019牛客多校第一场