• BLOG
  • ARCHIVES
  • ABOUT
  • LINKS
  • GUESTBOOK
  • splay

    February 7, 2016
    splay 是一种很灵活的数据结构。它是动态树的基础,动态树是维护树上数据的神器啊~splay是一种特殊的二叉查找树,与平衡树不同,不是按照判断高度来降低深度的。每次插入一个点,或者每次处理一个点,都需要进行一次splay操作把该点移动到根,根据数据的局部性原理,可以使处理变得快一点。它有以下规则:(p是x的parent节点)当p为根节点时,进行zip step操作。当x是p的左孩子时,对x右旋;当x是p的右孩子时,对x左旋。当p不是根节点,且x和p不同为左孩子或右孩子时,进行Zig-Zag操作。当...
    Read more »
  • 树链剖分

    February 7, 2016
    线段树是一种非常常用的数据结构,能够在log的时间内对数组进行区间修改,区间合并等操作。它的局限性也很明显,如果操作不是在数组上,而是在一颗树上,那么线段树将无能为力。树链剖分为线段树的这个缺点提供的有效的解决方法,即把树转化为链。尽可能把树上的操作转化为链的操作。如下图所示,粗的线条就是重链,细的是轻链,标号是其在线段树中的位置树链剖分把一棵树标号,把树上的链分为重链和轻链两种。重链就是父亲到最重的儿子上的一条边。且转化出来的相连的重链标号连续。所有链的编号不同。我们知道,树上的每两个点之间的路径...
    Read more »
  • 线段树-两种操作

    February 7, 2016
    线段树是一种二叉树结构,能够在lg(n)的复杂度下完成一些计算。最长见的就是数列求和之类的,而且还能够支持单点修改甚至是区间修改。线段树的精髓在于懒惰标记,也就是说,在更新的时候,不更新全部子节点,只会打一个标记。比如说一段区间要加一个值,它不会在每个叶子节点加上相应数值,而是在覆盖需要修改的子节点的区间上加一个tag要加多少,相应的因为要保证上层计算无误,所以要根据自己的孩子数更新自己的sum值。如果下次要更新这段覆盖的区间的子区间,可以把相应的标记下放。线段树支持两种操作其实也比较简单,就是考虑...
    Read more »
  • getopt

    February 7, 2016
    #include<unistd.h> int getopt(int argc,char * const argv[ ],const char * optstring);它是用来分析命令行参数的函数。参数optstring 则代表欲处理的选项字符串。字母后没有符号: 不带值的参数,定义即参数本身字母后带一个冒号: 必须带值,值被全域变量optarg指向。字母后带两个冒号: 可选值的参数,参数可加可不加。getopt()每次调用会逐次返回命令行传入的参数,当没有参数的最后一次调用会返回-1。...
    Read more »
  • sched_param

    November 16, 2015
    #include <sched.h> struct sched_param { int32_t sched_priority; int32_t sched_curpriority; union { int32_t reserved[8]; struct { int32_t __ss_low_priority; int32_t __ss_max_repl...
    Read more »
  • PAGE 5 OF 9
    PREV PAGE NEXT PAGE

© 2025 Mess Ideas.

The theme is apollo, Powered by Typecho .