Solution -「HNOI 2016」最小公倍数(lacks of code)
§ Description
Link.
给出一个带权无向图,边权为 2a⋅3b 形式。
给出 q 组形如 u,v,a,b 的询问,问 u,v 中是否存在一条路径使得其边权之 lcm 为 2a⋅3b。
§ Solution
考虑 lcm 的本质,对 n 个数 ∏i=1k1p1,ic1,i,∏i=1k2p2,ic2,i,…,∏i=1knpn,icn,i 取 lcm 就是 ∏i=1max{k}pimax{c}(在一个数中存在的 p 且在另一个中不存在的置为 1),对于这题即 2max{a}⋅3max{b},让两个 max 分别等于题目给出的 a,b。
现在转化一下题意,在 u,v 中选出一条可非简单路径使得 max{a},max{b} 分别等于给出的 a,b。
有一个 naive 的想法是缩点后 LCT 维护结果发现不太行。(好像是我不行)
既然想到了用 LCT 维护连通性那么同样可以想到用 DSU 来维护,把所有满足条件的边放入一个 DSU 然后看 u,v 是否能被这些边联通。
有两个关键字欸,我们离线询问排序吧。
把所有边按照 a 排序,把询问按 b 排序。
然后对边的标号分块,这样块内边 a 有序。
然后把每个询问放在满足前面块的 a 都小于等于这个询问的 a 的块里,并且把块内询问 b 排序,然后就可以做了。
代码狼 BH 今天又口胡题解没代码了。
Oops, something went wrong.