• Splay-Tree总结一:模拟队列


     伸展树是一种强大的数据结构,由于其特性,可以很好地模拟队列的插队等操作,而线段树解决这类问题通常需要转化一下,比较伤脑筋

    而用伸展树的解决方法就是先建好一颗节点数等于队列长度的树,每个队列元素在队列中的排名就是这个元素在伸展树中的结点号

    那么询问 i 在队列中的排名:splay(i,0), rank=size[ch[root][0]]+1;

    询问队列中第 i 个元素是什么:在伸展树中找到第i个元素,其节点号就是答案

    hdu1890:有两种操作:模拟队列:把结点i移到队列最前面(删除根结点+移点操作)+ 区间翻转操作 https://www.cnblogs.com/zsben991126/p/9998223.html

    hdu3436:有三种操作 top x:把结点x提到最前面  query x:询问结点x在队列中的排名 rank x:询问在队列中排x的元素号   

        由于x的范围大,需要先将其离散化+缩点后,用伸展树即可完美模拟  https://www.cnblogs.com/zsben991126/p/10006172.html

    伸展树单点更新模板 https://www.cnblogs.com/zsben991126/p/10003544.html

                

  • 相关阅读:
    NYOJ926(概率)
    无根树转有根树
    Codeforces Round #304 C(Div. 2)(模拟)
    hdu5878(枚举,打表)
    求一个矩阵的逆矩阵(用伴随矩阵求)
    求n阶方阵的值(递归)
    setw()函数
    快速幂计算(整数快速幂/矩阵快速幂)
    全文检索
    发送邮件
  • 原文地址:https://www.cnblogs.com/zsben991126/p/10006175.html
Copyright © 2020-2023  润新知