APIO2019简要题解

桥梁(bridges)

分析

对时间轴分块,把每条边的存在时间分成\(O(\sqrt{q})\)个整块挂在对应的块上,和\(O(\sqrt{q})\)个单点挂在对应的询问上。每个块内单独处理,把所有挂在这个块上的边和所有询问按\(w\)从大到小排序,离线处理块内所有询问,使用并查集在加边维护连通性的同时将连通块缩点。对于每个询问,连上所有挂在这个询问上的边然后dfs一遍统计答案,再把边断掉就好了。

\(n,q\)同阶,时间复杂度则为\(O(n\sqrt{n}\alpha(n))\)

奇怪装置(device)

分析

容易观察出\((x,y)\)的变化是有循环节的,设这个最小循环节的长度为\(len\),则\(len\)一定满足下面这些性质。

  1. \(B|len\)(废话)。

  2. \(\frac{AB}{\gcd(A,B+1)}|len\)

容易发现\(len=\frac{AB}{\gcd(A,B+1)}\)

于是问题转化为了求若干个区间的并,排序后扫一遍就好了,时间复杂度为\(O(n \log n)\)

路灯(lamps)

分析

把询问看成二维平面上的点,使用set维护极长全\(1\)连续段并记录它们的出现时间。在一个连续段发生变化时,把这个连续段产生的贡献通过矩形加加到一个矩形内的所有询问上,可以使用CDQ分治,树套树或者K-D Tree实现。

\(n,q\)同阶,时间复杂度则为\(O(n \log^2 n)\)或者\(O(n \sqrt n)\)

posted on 2019-05-22 09:39  ErkkiErkko  阅读(127)  评论(0编辑  收藏  举报