zoukankan      html  css  js  c++  java
  • splay/LCT总结

    splay:

      单纯splay的话,如果不要求第k大,或者求rank,基本都可以用set代替了。。

      几个套路:

        1.为了简化代码,也避免RE,大部分 题目都可以在建树时,先建一个空的起点和空的终点,然后在ch[ch[rt][1]][0]这个key_pos位置根据原序列建树。这样做的话在find_kth时候要特别注意k要++

        2.其实不管是区间修改还是点修改,都可以把要修改的部分转到key_pos,然后直接打标记就好了。这里的标记和线段树的标记还是有那么一丢丢 不一样的。。这里的标记是打在一个点上,线段树是把               整个区间都标记了。可能需要画图自己理解

        3.序列很长的时候,往往需要离散化。要考虑哪些点是在操作过程中会单独拿出来。比如删除某个点,就必须把这个点单独拿出来。其它的操作即使是询问,不单独拿出来也是不要紧的其实

        4.大部分操作完毕(比如插入)记得把对象结点旋转到根。这也算是复杂度的保证(玄学)

    LCT:

      其实用来维护森林的连通性的数据结构

      1.结点0的初始化很重要,要考虑清楚

      2.初始化的时候可以把所有边都设置成轻边。之后的操作会将需要的边变成重边,所以也不太需要担心复杂度的问题(这种东西的复杂度不都是口口相传,还都是玄学)

      3.路径操作都是先make_rt一个点,然后再access另一个点,那整条路径就用一整棵splay维护起来了,打个标记或者直接从根那需要的信息就完事啦

      4.对于一个基环森林,可以先拆掉一条边(u,v)。则可以把v作为这棵树的根,u记为v的special father。操作的时候要多考虑spf的影响

  • 相关阅读:
    基于mini2440的两种触屏中断程序(T35)
    TFT LCD控制显示总结(硬件概念、初始化相关配置)
    TFT资料大全
    最全的摄像头资料
    【转】x.509证书在WCF中的应用(CS篇)
    C#中可以使用正则表达式来过滤html字符
    前台调用后台方法(转来的!)
    C#字符串截取(区分汉字)(转)
    用C#制作PDF文件全攻略 (专至csdn)
    证书创建工具 (Makecert.exe)
  • 原文地址:https://www.cnblogs.com/luxiaoming/p/6919883.html
Copyright © 2011-2022 走看看