shabby ds
gym103687K. Dynamic Reachability
首先看到这个巨大的时限 ,盲猜一手是 或者是分块结果两个都有
最直观的想法肯定是直接搜,复杂度是 的,不可以接受,但是这种做法太没有拓展性了,考虑一些有拓展性的做法,发现一般图传递闭包是 ,但是拓扑图的传递闭包是 ,考虑把他缩点成一个拓扑图然后拓扑排序,时间复杂度 更加不能接受了,但是这个看起来就比上面那个高级很多,因为我们能求出整张图上每个点能到达的所有点,这个是上面做不到的,而且每次修改只会改一条边,所以图不会产生太大的变化
这时候就感觉应该是分块了,我们把每 个询问放到一块做,设这 个操作里面涉及到的点为关键点,涉及到的边为关键边,发现我们就是问关键点的连通性,我们对于每个点维护一个关键点的 ,表示这个点能到达的关键点,通过黑色的非关键边跑拓扑排序求出,这样就在不考虑关键边的情况下建出了不含关键边的关键点新图,因为我 只维护关键点,所以复杂度就是
先不管关键边,思考怎么查询,直观想法是继续拓扑排序,但是这样没有拓展性,因为我不可能建出新图后递归上面那坨答辩算法,因为万一是我建出来的就是拓扑图就寄了不能递归了,所以考虑一开始就提出的 ,发现现在的图很小了,只有 个点 条边,直接跑复杂度是 的。
现在来分析一下复杂度,将上面的答辩加起来是 ,化简一下是 ,根号平衡一下 发现大概是 ,然后就结束了……吗?
算一下复杂度大概是 左右,然后我们就开心的写,然后就 了
发现有一个神奇的东西,用 优化 可以做到 ,现在复杂度就是 了,复杂度大概是 ,我也不知道,反正就是能过了
gym105065B. Call Me Call Me
15s 时限我跑了14476 ms。
lxl 讲的
shabby ds
http://lnyxqwq.github.io/2023/08/15/shabby ds/