zoukankan      html  css  js  c++  java
  • bzoj1588 营业额统计

    裸的平衡树题,splay做的。。。

    存下板子

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define INF 0x3f3f3f3f
    using namespace std;
    int n,tot,rt,ans;
    int v[100005];
    struct node{
        int son[2];
        int fa;
        int val;
    }tr[100005];
    void rotate(int x){
        int y=tr[x].fa,z=tr[y].fa;
        int typ=(x==tr[y].son[1]);
        tr[y].son[typ]=tr[x].son[typ^1];
        tr[tr[x].son[typ^1]].fa=y;
        tr[x].son[typ^1]=y;tr[y].fa=x;
        tr[x].fa=z;
        if(z){
            if(tr[z].son[1]==y)tr[z].son[1]=x;
            else tr[z].son[0]=x;
        }
    }
    void splay(int x){
        for(int y;y=tr[x].fa;rotate(x)){
            if(tr[y].fa){
                rotate((x==tr[y].son[0])==(y==tr[tr[y].fa].son[0])?y:x);
            }
        }
        rt=x;
    }
    void insert(int x,int y){
        int k;
        while(true){
            k=tr[x].son[tr[x].val<y];
            if(!k){
                k=++tot;
                tr[x].son[tr[x].val<y]=k;
                tr[k].val=y;tr[k].fa=x;
                break;
            }
            x=k;
        }
        splay(k);
    }
    int find_pre(int x){
        int tmp=tr[x].son[0];
        while(tr[tmp].son[1])tmp=tr[tmp].son[1];
        return tr[tmp].val;
    }
    int find_suc(int x){
        int tmp=tr[x].son[1];
        while(tr[tmp].son[0])tmp=tr[tmp].son[0];
        return tr[tmp].val;
    }
    int main(){
        scanf("%d",&n);
        scanf("%d",&v[1]);
        ans=v[1];
        insert(rt,v[1]);
        insert(rt,INF);
        insert(rt,-INF);
        for(int i=2;i<=n;i++){
            scanf("%d",&v[i]);
            insert(rt,v[i]);
            if(i>=2)ans+=min(v[i]-find_pre(v[i]),find_suc(v[i])-v[i]);
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    文章参考
    选择标识符(identifier)
    linux常见命令2
    Django框架之MVT(1)
    Tornado入门二
    2.Flask-jinjia2模板
    JQuery扩展和事件
    JQuery文档操作
    Jquery学习
    Jquery属性操作(入门二)
  • 原文地址:https://www.cnblogs.com/lnxcj/p/9601039.html
Copyright © 2011-2022 走看看