zoukankan      html  css  js  c++  java
  • POJ 1442 Treap模板

    // by SiriusRen
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int cnt=0,jy,a[30500],n,m,root=-1;
    struct node{
        int left,right,count_left,count_right,key,priority;
    }treap[30500];
    void zig(int &x){
        int y=treap[x].right;
        treap[x].right=treap[y].left;
        treap[x].count_right=treap[y].count_left;
        treap[y].left=x;
        treap[y].count_left=treap[x].count_left+treap[x].count_right+1;
        x=y;
    }
    void zag(int &x){
        int y=treap[x].left;
        treap[x].left=treap[y].right;
        treap[x].count_left=treap[y].count_right;
        treap[y].right=x;
        treap[y].count_right=treap[x].count_left+treap[x].count_right+1;
        x=y;
    }
    void insert(int &x,int new_key){
        if(x==-1){
            x=cnt++;
            treap[x].left=treap[x].right=-1;
            treap[x].priority=rand();
            treap[x].key=new_key;
            treap[x].count_left=treap[x].count_right=0;
        }
        else if(new_key<treap[x].key){
            treap[x].count_left++;
            insert(treap[x].left,new_key);
            if(treap[x].priority>treap[treap[x].left].priority)zag(x);
        }
        else{
            treap[x].count_right++;
            insert(treap[x].right,new_key);
            if(treap[x].priority>treap[treap[x].right].priority)zig(x);
        }
    }
    int query(int &x,int k_th){
        if(treap[x].count_left+1==k_th)return treap[x].key;
        if(treap[x].count_left+1<k_th)return query(treap[x].right,k_th-treap[x].count_left-1);
        return query(treap[x].left,k_th);
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)scanf("%d",&a[i]);
        for(int i=1;i<=m;i++){
            scanf("%d",&jy);
            while(cnt<jy)insert(root,a[cnt+1]);
            printf("%d
    ",query(root,i));
        }
    }

    这里写图片描述

  • 相关阅读:
    glade2支持C++代码的输出(1)
    通用的信号量捕获打印调用栈接口
    xbmc的静态链接办法
    SVG图片资源较多的一个WIKI网站
    批量图片大小调整
    每日算法
    每日算法
    每日算法
    每日算法
    每日算法
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532417.html
Copyright © 2011-2022 走看看