【学习笔记】陀螺 Treap

以下来自一堆人从食堂走回机房时的 yy


(Huge{强烈谴责 mathrm{scolor{red}{kyh}} 看博客不留评论的行为})

听说 longdie 要爆砍 FHQ 无旋 Treap

那么在 orz longdie 的同时,先来和小编一起学一学 (Huge{360}) 度旋转陀螺 Treap 吧~~

核心代码

const int mod=19260817;
int X=133,Y=19;
inline int rand(){
    X=X*mod;
    X-=Y;
    return abs(X);
}

inline void rotate(){
    //do something...
    //普通的rotate
}

inline void TopTreap(){
    //陀螺的英文是Top,是不是很震惊
    int x=rand();
    while(x--){
        rotate();
    }
}

算法内容

可以看到,使用这种陀螺 Treap,完美模拟抽奖转盘思想,rp 好就不 T,rp 爆炸就 T 掉。再加上 longdie 的随机数生成器,是不是大家很快就被这种算法折服了呢?

实际上,这种算法跑的也是很快的,下面是小编的实测:

可以看到,所有点都 0ms 就 AC 了!

那么这就是今天 Midoria7 看世界的内容了,如果大家又学到了,欢迎在评论区评论哦~~

原文地址:https://www.cnblogs.com/Midoria7/p/13778537.html