• 2009-03-02

    poj 2991 Crane 线段树+极角旋转 - [武林秘籍]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://clover520.blogbus.com/logs/35921902.html

    {x, y} *|  cosa, sina |   ={x',y'}
                | -sina, cosa |

    x',y'是新坐标。a是逆时针旋转角。

    这个题旋转到固定角度可以转化到旋转角度。

    如果只是某一关节旋转,那么此结点以后的点之间的相对位置都是不变的。我们只传递标志就行了。那它前面的,显然也不变。所以我们只要在对结点标记以后,相应的更新一下浏览过的结点就好了。

    也或者理解为插入区间为(k,n],插入运算是矩阵右乘。

     

    不过发生了一个很灵异的事情。对于线段树,二叉,没有单度结点。如果有n个叶子结点,那么总点数应该是2n-1.但是实际应用中。。预留内存放到2n都会出错。。所以比较保险的方法是放到3n以上。。不明白为何呢。


    历史上的今天:


    收藏到:Del.icio.us




    Tag:线段树

    评论

  • 如果有n个叶子结点,那么总点数应该是2n-1.
    *******************************************
    这句话,如果是完全二叉树的话,是正确的;
    确实静态线段树用的是完全二叉树原理来保存的;
    而叶子节点并不是都在最后一层的;
    底层,甚至一些上层都会是没有用到的;
    所有,预留能存2n的话,往往是不够的;

    应该是这样吧。。
    AngelClover回复joy32812说:
    恩~确实叶子可以随处出现的~利用叶子的分裂和合并在某些地方可以加速很多。而且如果内存紧的话还是内存分配的办法好。静态树的办法只是偶尔偷懒才这么写的,但是那些没利用的空间又不能不保留。摊手。
    2010-04-19 15:07:43
  • 线段树牛。。。

    我终于看得大概明白了- -|||