• LCT模板


     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int fa[500010],ch[500010][2],sum[500010],v[500010],rev[500010],lb[500010],bf[500010][3],n,q,type,ty,last;
     4 bool root(int x){ return ((fa[x]==0)or((ch[fa[x]][0]!=x)and(ch[fa[x]][1]!=x))); }
     5 bool lch(int x){ return (ch[fa[x]][0]==x); }
     6 void up(int x){ sum[x]=sum[ch[x][0]]+v[x]+sum[ch[x][1]]; }
     7 void down(int x)
     8 {
     9     if(rev[x]==0)return;
    10     rev[x]=0; swap(ch[x][0],ch[x][1]); if(ch[x][0])rev[ch[x][0]]^=1; if(ch[x][1])rev[ch[x][1]]^=1;
    11 }
    12 void rot(int x)
    13 {
    14     if((x==0)or(root(x)))return;
    15     int y=fa[x]; int t=fa[y];
    16     if(ch[t][0]==y)ch[t][0]=x;else if(ch[t][1]==y)ch[t][1]=x; fa[x]=t; fa[y]=x; 
    17     if(ch[y][0]==x){ ch[y][0]=ch[x][1]; if(ch[x][1])fa[ch[x][1]]=y; ch[x][1]=y; }
    18     else{ ch[y][1]=ch[x][0]; if(ch[x][0])fa[ch[x][0]]=y; ch[x][0]=y; }
    19     up(y); up(x); if(t)up(t);
    20 }
    21 void splay(int x)
    22 {
    23     if(x==0)return; int xx=x; int cnt=0;
    24     while(!root(xx)){ lb[++cnt]=xx; xx=fa[xx]; } lb[++cnt]=xx;
    25     for(int i=cnt;i>=1;i--)down(lb[i]);
    26     while(!root(x)){ if(!root(fa[x])){ if((lch(x))^(lch(fa[x])))rot(x);else rot(fa[x]); } rot(x); }
    27 }
    28 int access(int x)
    29 {
    30     int t=0;
    31     while(x!=0){ splay(x); ch[x][1]=t; up(x); if(t)fa[t]=x; t=x; x=fa[x]; } 
    32     return t;
    33 }
    34 void cut(int x,int y)
    35 {
    36     access(x); int z=access(y); splay(x);
    37     if(x==z){ ch[x][1]=0; fa[y]=0; up(x); }else fa[x]=0;
    38 }
    39 void link(int x,int y)
    40 {
    41     access(x); splay(x); rev[x]^=1; fa[x]=y;
    42 }
    43 int qsum(int x,int y)
    44 {
    45     access(x); int z=access(y); splay(x);
    46     if(x==z)return v[x]+sum[ch[x][1]];else return sum[x]+v[z]+sum[ch[z][1]]; 
    47 }
    View Code
  • 相关阅读:
    Tomcat windows服务器配置多个Tomcat
    Sharepoint开发实用技巧(1)
    戏说MOSS关于EventHander编程
    协作应用程序标记语言 CAML 点滴(一)
    MOSS开发手记(3)
    协作应用程序标记语言 CAML点滴(二)
    MOSS项目开发(1) 项目计划,重点及文档
    MOSS项目开发(4) 开发文档的规范
    MOSS开发手记(2)
    Asp.Net页面执行流程分析
  • 原文地址:https://www.cnblogs.com/GhostReach/p/6559306.html
Copyright © 2020-2023  润新知