• [bzoj 3531][SDOI2014]旅行(树链剖分+动态开点线段树)


    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3531

    分析:

    对于每个颜色(颜色<=10^5)都建立一颗线段树

    什么!那么不是MLE了吗!

    类似于主席树时候的操作,采用动态开点线段树,对于某个插入操作,从对应颜色的线段树根节点开始对应往下找,一但找到了空节点,则新建节点继续往下,知道元节点。

    这样对于每个点,顶多开一条链

    所以总的空间是nlogn的

    对于原问题的几个操作,修改权值、询问和、询问最大值都是树链剖分的经典操作

    还有个操作比较特殊,就是改变一个点的颜色。

    这其实也很好办,设这个点颜色由A改为B,那么先在A线段树中把这个点对应的线段权值改为0,再在B线段树中把这个点对应的线段权值改为这个点的权值。

    代码以后补……

  • 相关阅读:
    UILabel 详解
    didMoveToSuperView 引发的思考
    Source
    设计模式
    Code ReView
    UIApearance
    UINavigationBar
    initWithNibName与viewDidLoad的执行关系以及顺序
    bLock 回调 就是这么简单!
    程序语言小记
  • 原文地址:https://www.cnblogs.com/wmrv587/p/4364176.html
Copyright © 2020-2023  润新知