zoukankan      html  css  js  c++  java
  • 关于lct维护动态生成树问题

    水管局长数据加强版

    题意是要求维护一棵最小生成树,支持删边操作。

    删边操作比较难处理,因为如果删掉树上的边,

    很难从已经有备选集合中找出连接不同联通块的最小的边。

    然而题目并没有要求在线。 所以离线。

    问题由删边转化为加边。

    考虑加的每一条边:

    如果两个点没有联通,直接联通。

    如果两个点已经联通,那么两个点之间存在一条唯一路径。

    加上当前边,会形成一个简单环。

    找出这个简单环上的最大边权,删掉那一条边就可以了。

    实际操作中并没有涉及到简单环,其实是查询两点之间的最大边权,并尝试用当前边替换最大边。

    GERALD07加强版

    一些求联通块问题,比较优秀的解法是:

    形成生成树组成的森林,利用每棵树点数-边数=1的性质,答案为总点数-总边数。

    本题的做法类似数颜色问题的主席树解法:

    从编号为1的边开始尝试插入lct,

    如果已经形成简单环,那么替换掉简单环上编号最靠前的边

    并将该边的前趋设为替换的边,将前趋表示在主席树上。

    每次询问,其实就是问:

    n-区间中有多少用到的边,

    后者查询主席树区间[l,r]内,权值小于l的就可以了。

  • 相关阅读:
    stack计算表达式的值
    stack例子
    stoi的例子
    前端 获取项目根路径的四种方式
    document.write()
    动态引入js文件
    Uncaught SyntaxError: Invalid or unexpected token
    oracle 快速备份表数据
    Tsinsen A1303. tree(伍一鸣) LCT
    VS2015--win32project配置的一些想法之cmake
  • 原文地址:https://www.cnblogs.com/skyh/p/11535590.html
Copyright © 2011-2022 走看看