zoukankan      html  css  js  c++  java
  • Codeforces 938G(cdq分治+可撤销并查集+线性基)

    题意:

      有一个无向连通图,支持三个操作:

      1 x y d : 新建一条x和y的无向边,长度为d

      2 x y    :删除x和y之间的无向边

      3 x y    :询问x到y的所有路径中(可以绕环)最短的是多少(路径长度是经过所有边的异或)

      n,m,q<=2e5

    分析:

      如果没有加边和删边操作,那么就是个经典的线性基问题

      我们可以先弄出一个树,然后非树边就形成环,把环丢进线性基就可以了

      现在有了加边和删边操作,我们可以考虑每条边的存活时间,对这个时间进行cdq分治,那么就只有加边没有删边了

      然后再离线处理询问即可

      可以用线段树实现更加简单

      具体实现的时候,加边操作即是加了一些边到并查集里面,所以退出时撤销掉就行了

      至于base,直接拿数组存下来,覆盖即可

      时间复杂度O(nlog^2n)

      代码

  • 相关阅读:
    Visual Studio 2015 密钥
    Vue-next源码新鲜出炉一
    vue2.0基础整理
    Nest
    Nest
    Nest
    Nest
    Nest快速上手
    element-plus源码分析第一节
    获取视频第一帧,作为封面图
  • 原文地址:https://www.cnblogs.com/wmrv587/p/8544403.html
Copyright © 2011-2022 走看看