zoukankan      html  css  js  c++  java
  • fhq treap 封装

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define ls (l[cnt])
    #define rs (r[cnt])
    const int N = 100005;
    
    struct Ftree
    {
    	int l[N], r[N], val[N], rad[N], siz[N], ecnt, rt;
    	int New(int k)
    	{
    		val[++ecnt] = k;
    		rad[ecnt] = rand();
    		siz[ecnt] = 1;
    		return ecnt;
    	}
    	void update(int cnt)
    	{
    		siz[cnt] = siz[ls] + siz[rs] + 1;
    	}
    	void split(int cnt, int k, int &x, int &y)
    	{
    		if(cnt == 0)
    		{
    			x = y = 0;
    			return ;
    		}
    		if(val[cnt] <= k)
    		{
    			x = cnt;
    			split(rs, k, rs, y);
    		}
    		if(val[cnt] > k)
    		{
    			y = cnt;
    			split(ls, k, x, ls);
    		}
    		update(cnt);
    	} 
    	int merge(int x, int y)
    	{
    		if(x == 0) return y;
    		if(y == 0) return x;
    		if(rad[x] <= rad[y])
    		{
    			r[x] = merge(r[x], y);
    			update(x);
    			return x;
    		}
    		if(rad[x] > rad[y])
    		{
    			l[y] = merge(x, l[y]);
    			update(y);
    			return y;
    		}
    	}
    	int kth(int cnt, int k)
    	{
    		if(siz[ls] + 1 == k) return val[cnt];
    		if(siz[ls] >= k) return kth(ls, k);
    		else return kth(rs, k - siz[ls] - 1);
    	}
    	void add(int k)
    	{
    		int x, y;
    		split(rt, k, x, y);
    		rt = merge(merge(x, New(k)), y);
    	}
    	void del(int k)
    	{
    		int x, y, z;
    		split(rt, k, x, y);
    		split(x, k - 1, x, z);
    		z = merge(l[z], r[z]);
    		rt = merge(merge(x, z), y);
    	}
    	int suc(int k)
    	{
    		int x, y, ans; 
    		split(rt, k, x, y);
    		ans = kth(y, 1);
    		rt = merge(x, y);
    		return ans;
    	}
    	int pre(int k)
    	{
    		int x, y, ans;
    		split(rt, k - 1, x, y);
    		ans = kth(x, siz[x]);
    		rt = merge(x, y);
    		return ans;
    	}	
    }ft;
    int main()
    {
    	
    }
    
  • 相关阅读:
    hdu4280 Island Transport(最大流Dinic数组模拟邻接连边)
    hihoCoder1378 (最大流最小割)
    单聊语音
    Mybatis批量更新数据
    mysql 之 MRR
    Intellij IDEA 快捷键整理
    SpringBoot 整合 Swagger2 使用教程
    jdk/dubbo spi
    redis问题(待解决)
    JVM调优心得
  • 原文地址:https://www.cnblogs.com/lcezych/p/13236342.html
Copyright © 2011-2022 走看看