【题解】[HNOI2016]最小公倍数

[HNOI2016]最小公倍数

思维题。

考虑离线。然后判断 i , j i,j i,j 是否有通路,以及经过的边大小不超过 b b b ,经过了一条正好等于 a a a 的边。

考虑转化问题。本题实际上是求,在边 ( u , v ) (u,v) (u,v) 满足 a x ≤ a a_x\leq a axa b x ≤ b b_x\leq b bxb 的情况下, ( i , j ) (i,j) (i,j) 能否联通,且联通块内是否存在 a x = a a_x=a ax=a b x = b b_x=b bx=b 的边。

考虑分块。先给边按第一关键词排序,给边分块,再把同一块里的询问按第二关键词排序,再把当前块前面的点按照第二关键字排序,这样当前块前面的点都是符合当前询问点对于第一关建字条件的,而且第二关键字都是单调的,所以按块的顺序处理一下,然后对于每个询问,暴力处理一下当前块的贡献(注意此时第一关键字并不单调)。

对于相同块的部分,可以 BFS 处理。因为边的个数有限,所以时间复杂度是边的条数。

当块为 m l o g n \sqrt{mlogn} mlogn 时最优。

posted @ 2021-05-01 10:23  仰望星空的蚂蚁  阅读(19)  评论(0)    收藏  举报  来源