• 洛谷P1501 动态树(LCT)


    https://www.luogu.org/problemnew/show/P1501

    题意

    第一眼觉得只要直接树剖就可以了,但是仔细看了看操作2好像并不简单,树剖没法直接变树。

    所以需要用到LCT(link-cut tree)实现操作2,至于操作1,3,4,原本线段树在维护区间和的时候,遇到区间加和区间乘的操作是维护两个lazy标记,一个是加标记一个是乘标记,进行乘操作的时候先把区间和乘上c,再把乘标记和加标记乘上c,遇到区间加的时候需要修改全部四个值,注意的是区间和需要加上size * c,所以还需要维护一个区间size.

    在搞明白了线段树维护之后,这个就不难了,像维护线段树一样维护一个LCT,每次修改(加,乘)的时候就把要修改的其中一个点转到根节点,然后直接对他修改,在查询的时候一路Pushdown就可以了

  • 相关阅读:
    hdu3874
    spoj D-query
    hdu4348
    hdu4417
    hdu2665
    [LUOGU] P1057 传球游戏
    [CODEVS] 2193 数字三角形WW
    [CODEVS] 2189 数字三角形W
    [模板] 线段树
    [模板] 树状数组
  • 原文地址:https://www.cnblogs.com/Hugh-Locke/p/11163917.html
Copyright © 2020-2023  润新知