【学习笔记】陀螺 Treap

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


\(\Huge{强烈谴责\ \mathrm{s\color{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 看世界的内容了,如果大家又学到了,欢迎在评论区评论哦~~

posted @ 2020-10-07 19:20  Midoria7  阅读(166)  评论(3编辑  收藏  举报