zoukankan      html  css  js  c++  java
  • bzoj2761

    事实证明,数据存在负数?

    用treap确实小题大做了

    #include<cstdio>
    #include<cctype>
    #include<cstring>
    #include<cstdlib>
    using namespace std;
    int n,siz,rt,x,flag;
    struct data{int rnd,val,l,r;}tr[50002];
    void rturn(int &k){int tmp=tr[k].l;tr[k].l=tr[tmp].r;tr[tmp].r=k;k=tmp;}
    void lturn(int &k){int tmp=tr[k].r;tr[k].r=tr[tmp].l;tr[tmp].l=k;k=tmp;}
    void read(int &x){
        char ch=getchar();x=0;int f=1;
        while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
        while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
        x*=f;
    }
    void insert(int &k,int x){
        if(k==0){siz++;k=siz;tr[k].val=x;tr[k].rnd=rand();return;}
        if(tr[k].val==x){flag=1;return;}
        else if(x<tr[k].val){insert(tr[k].l,x);if(tr[tr[k].l].rnd<tr[k].rnd)rturn(k);}
        else {insert(tr[k].r,x);if(tr[tr[k].r].rnd<tr[k].rnd)lturn(k);}
    }
    
    int main(){
        int T;read(T);
        while(T--){
            memset(tr,0,sizeof tr);
            read(n);rt=siz=flag=0;
            read(x);insert(rt,x);if(!flag)printf("%d",x);
            for(int i=1;i<n;i++){
                flag=0;
                read(x);insert(rt,x);
                if(!flag)printf(" %d",x);
            }
            printf("
    ");
        }
    }

    黄学长的hash自行了解

  • 相关阅读:
    map & reduce
    Generator
    切片
    函数参数
    Dict & Set
    list,tuple
    selenium鼠标和键盘操作
    selenium元素定位以及点击事件
    css定位
    xpath
  • 原文地址:https://www.cnblogs.com/MikuKnight/p/9057460.html
Copyright © 2011-2022 走看看