APIO2019简要题解
桥梁(bridges)
分析
对时间轴分块,把每条边的存在时间分成\(O(\sqrt{q})\)个整块挂在对应的块上,和\(O(\sqrt{q})\)个单点挂在对应的询问上。每个块内单独处理,把所有挂在这个块上的边和所有询问按\(w\)从大到小排序,离线处理块内所有询问,使用并查集在加边维护连通性的同时将连通块缩点。对于每个询问,连上所有挂在这个询问上的边然后dfs一遍统计答案,再把边断掉就好了。
视\(n,q\)同阶,时间复杂度则为\(O(n\sqrt{n}\alpha(n))\)。
奇怪装置(device)
分析
容易观察出\((x,y)\)的变化是有循环节的,设这个最小循环节的长度为\(len\),则\(len\)一定满足下面这些性质。
-
\(B|len\)(废话)。
-
\(\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) 编辑 收藏 举报