zoukankan      html  css  js  c++  java
  • bzoj 1208 splay模板题2

                自己yy了找前驱和后继,学了学怎么删除。。。(反正就是练模板)

            

      1 #include<iostream>
      2 #include<cstdio>
      3 #include<cstring>
      4 #include<algorithm>
      5 #define N 80005
      6 #define lc(x) ch[x][0]
      7 #define rc(x) ch[x][1]
      8 #define inf 0x3f3f3f3f
      9 using namespace std;
     10 int n,k[N*4],size,ch[N*4][2],root,cnt,fa[N];
     11 void rotate(int p)
     12 {
     13     int q=fa[p],y=fa[q],x=(ch[q][1]==p);
     14     ch[q][x]=ch[p][x^1];fa[ch[q][x]]=q;
     15     ch[p][x^1]=q;fa[q]=p;
     16     fa[p]=y;
     17     if(y)
     18     {
     19         if(ch[y][0]==q)ch[y][0]=p;
     20         else ch[y][1]=p;
     21     }
     22 }
     23 void splay(int x)
     24 {
     25     for(int y;y=fa[x];rotate(x))
     26     {
     27         if(fa[y])
     28         {
     29             if((y==lc(fa[y])&&x==lc(y))||(y==rc(fa[y])&&x==rc(y)))rotate(y);
     30             else rotate(x);
     31         }
     32     }
     33     root=x;
     34 }
     35 void insert(int x,int v)
     36 {
     37      while(ch[x][k[x]<v])x=ch[x][k[x]<v];
     38      ch[x][k[x]<v]=++cnt;
     39      fa[cnt]=x;k[cnt]=v;splay(cnt);
     40 }
     41 int now1,now2;
     42 int pre(int x,int v)
     43 {
     44     int tmp=-inf;
     45     while(ch[x][k[x]<v])
     46     {
     47         if(k[x]<=v)if(k[x]>tmp)tmp=k[x],now1=x;
     48         x=ch[x][k[x]<v];
     49     }if(k[x]<=v)if(k[x]>tmp)tmp=k[x],now1=x;
     50     return tmp;
     51 }
     52 int suc(int x,int v)
     53 {
     54     int tmp=inf;
     55     while(ch[x][k[x]<v])
     56     {
     57         if(k[x]>=v)if(k[x]<tmp)tmp=k[x],now2=x;
     58         x=ch[x][k[x]<v];
     59     }if(k[x]>=v)if(k[x]<tmp)tmp=k[x],now2=x;
     60     return tmp;
     61 }
     62 void del(int x)
     63 {
     64     splay(x);
     65     if(!ch[x][0])fa[ch[x][1]]=0,root=ch[x][1];
     66     else if(!ch[x][1])fa[ch[x][0]]=0,root=ch[x][0];
     67     else 
     68     {
     69         fa[ch[x][0]]=0;
     70         int tmp=ch[x][0];while(ch[tmp][1])tmp=ch[tmp][1];
     71         splay(tmp);
     72         ch[tmp][1]=ch[x][1];fa[ch[x][1]]=tmp;
     73     }
     74     return ;
     75 }
     76 int main()
     77 {
     78    scanf("%d",&n);
     79    cnt=1;root=1;
     80    k[1]=inf;int ans=0;
     81    insert(root,-inf);
     82    size=0;int shu=0;
     83    for(int i=1;i<=n;i++)
     84    {
     85       int t1,t2;scanf("%d%d",&t1,&t2);
     86       if(!t1)
     87       {
     88          if(!shu||size==0)
     89          {
     90              insert(root,t2);
     91             shu=0;size++;
     92          }
     93          else 
     94          {
     95              size--;
     96              int qq=pre(root,t2),ww=suc(root,t2);
     97              if(abs(qq-t2)<=abs(ww-t2))
     98              {
     99                  ans+=abs(qq-t2);del(now1);
    100             }
    101             else 
    102             {
    103                 ans+=ww-t2;del(now2);
    104             }
    105          }
    106       }
    107       else
    108       {
    109           if(shu||size==0)
    110          {
    111              insert(root,t2);
    112             shu=1;size++;
    113          }
    114          else 
    115          {
    116              size--;
    117              int qq=pre(root,t2),ww=suc(root,t2); 
    118             if(abs(qq-t2)<=abs(ww-t2))
    119              {
    120                  ans+=abs(qq-t2);del(now1);
    121             }
    122             else 
    123             {
    124                 ans+=ww-t2;del(now2);
    125             }
    126          }
    127       }
    128       ans%=1000000;
    129    }
    130    printf("%d
    ",ans);
    131    return 0;
    132 }
  • 相关阅读:
    Siege 3.0 正式版发布,压力测试工具
    Pomm 1.1.2 发布,专为 PG 设计的 ORM 框架
    Whonix 0.5.6 发布,匿名通用操作系统
    国内开源 java cms,Jspxcms 2.0 发布
    EZNamespaceExtensions.Net v2013增加对上下文菜单、缩略图、图标、属性表的支持
    GNU Guile 2.0.9 发布,Scheme 实现
    jdao 1.0.4 发布 轻量级的orm工具包
    OpenSearchServer 1.4 RC4 发布
    Percona Server for MySQL 5.5.3030.2
    Samba 4.0.5 发布
  • 原文地址:https://www.cnblogs.com/ezyzy/p/6137828.html
Copyright © 2011-2022 走看看