typedef long long ll;

const int maxn = 400050;

struct lct {
    int ch[maxn][2], fa[maxn], w[maxn];
    bool col[maxn], rev[maxn];
    ll lans[maxn], rans[maxn], ans[maxn], tt[maxn], tt2[maxn], w2[maxn];
    inline void Rev(const int& x) {
        if(x) {
            rev[x] ^= 1;
            swap(ch[x][0], ch[x][1]);
            swap(lans[x], rans[x]);
        }
    }
    inline bool isroot(int x) {
        return ch[fa[x]][0] != x && ch[fa[x]][1] != x;
    }
    inline void pushdown(const int& x) {
        if(!x) return;
        if(!isroot(x)) pushdown(fa[x]);
        if(rev[x]) {
            Rev(ch[x][0]); Rev(ch[x][1]);
            rev[x] = 0;
        }
    }
    inline void maintain(const int& x) {
        if(!x) return;
        w2[x] = w2[ch[x][0]] + w2[ch[x][1]] + w[x];
        tt[x] = ;
        lans[x] = ;
        rans[x] = ;
    }
    inline void rotate(int x) {
        int f = fa[x], ff = fa[f], d = x == ch[f][1];
        if(!isroot(f)) ch[ff][f==ch[ff][1]] = x;
        fa[x] = ff;
        ch[f][d] = ch[x][d^1];
        if(ch[x][d^1]) fa[ch[x][d^1]] = ch[f][d];
        ch[x][d] = f; fa[f] = x;
        maintain(f);
    }
    inline void splay(int x) {
        pushdown(x);
        for(int f = fa[x], ff = fa[f]; !isroot(x); rotate(x), f = fa[x], ff = fa[f])
            if(!isroot(y)) rotate((x==ch[f][1])==(f==ch[ff][1])?f:x);
        maintain(x);
    }
    inline void access(int x) {
        int son = 0;
        while(x) {
            splay(x);
            ch[x][1] = son;
            maintain(x);
            son = x; x = fa[x];
        }
    }
    inline void mroot(int x) {
        access(x); splay(x);
        Rev(x);
    }
    inline void linkto(int u, int v) {
        mroot(x); mroot(v);
        fa[u] = v;
        maintain(v);
    }
    inline void cutfrom(int u, int v) {
        mroot(v); access(u); splay(u);
        int root = ch[v][0];
        ch[root][0] = fa[root] = ch[v][0] = fa[root] = 0;
        maintain(v);
    }

    

“自信可改变未来。”
是谁在夏令营说的说的来着?

进队=做大家都会的题+暴力全部打满
boj kt 基本没有这样的情况:因为时间不够没有想出做法。

好的LCT板子和一句话的更多相关文章

  1. BZOJ 2049 SDOI2008 洞穴勘测 LCT板子

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2049 题意概述:给出N个点,一开始不连通,M次操作,删边加边,保证图是一个森林,询问两点连 ...

  2. 沉迷Link-Cut tree无法自拔之:[BZOJ2049]洞穴勘探(蒟蒻的LCT板子)

    来自蒟蒻 \(Hero \_of \_Someone\) 的 \(LCT\) 学习笔记 最近学了一波 \(LCT\) , 于是怒刷 \(LCT\) 合集...... $ $ 学的时候借鉴了 Clove ...

  3. LCT板子

    粘板子: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; c ...

  4. 一堆LCT板子

    搞了一上午LCT,真是累死了-- 以前总觉得LCT高大上不好学不好打,今天打了几遍感觉还可以嘛= =反正现在的水平应付不太难的LCT题也够用了,就这样好了,接下来专心搞网络流. 话说以前一直YY不出来 ...

  5. BZOJ 2002 LCT板子题

    思路: LCT啊... (分块也行) 不过YOUSIKI出了一道“弹飞大爷” 就不能用分块水过去了 //By SiriusRen #include <cstdio> #include &l ...

  6. 洛谷P3203 [HNOI2010]弹飞绵羊(LCT,Splay)

    洛谷题目传送门 关于LCT的问题详见我的LCT总结 思路分析 首先分析一下题意.对于每个弹力装置,有且仅有一个位置可以弹到.把这样的一种关系可以视作边. 然后,每个装置一定会往后弹,这不就代表不存在环 ...

  7. bzoj 2049: [Sdoi2008]Cave 洞穴勘测 (LCT)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2049 题面: 2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 1 ...

  8. ☆ [NOI2014] 魔法森林 「LCT动态维护最小生成树」

    题目类型:\(LCT\)动态维护最小生成树 传送门:>Here< 题意:带权无向图,每条边有权值\(a[i],b[i]\).要求一条从\(1\)到\(N\)的路径,使得这条路径上的\(Ma ...

  9. LCT模板(指针版)

    本来是想做THUWC2017的泰勒展开xLCT题的-- 然后觉得数组写很麻烦-- 然后就决定挑战指针版-- 然后写得全是BUG-- 与BUG鏖战三千年后,有了这个指针版LCT板子! #include ...

随机推荐

  1. SpringBoot系列——i18n国际化

    前言 国际化是项目中不可或缺的功能,本文将实现springboot + thymeleaf的HTML页面.js代码.java代码国际化过程记录下来. 代码编写 工程结构 每个文件里面的值(按工程结构循 ...

  2. 使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)

    前言:大过年的,写篇文章不容易,还是给自己点个赞~~年前找了下.net安装包的制作方法,发现Visual Studio自带的制作工具使用起来非常麻烦,需要单独下载安装包,并且什么激活认证等等屁事相当麻 ...

  3. 利用scrollintoview方法模拟聊天室收到新消息

    这段时间再写一个聊天的功能,基本的原理已经通了,剩下的就是细化功能和实现了.原理通了不代表就能解决了这个问题,今天就遇到了一个小问题,就是在接收到新的消息以后,最新的消息不能显示在消息区域,而是跑到了 ...

  4. 一种递推组合数前缀和的Trick

    记录一下一种推组合数前缀和的方法 Trick 设\(\sum_{i = 0}^m C_n^i = S(n, m)\) \(S\)是可以递推的 \(S(n, m + 1) = S(n, m) + C_{ ...

  5. Android远程桌面助手(Build 0787)

    Android远程桌面助手(Build 0787) 新增: 增加了输入法的快速切换功能,支持通过Google拼音输入法在PC端快速输入中文: 增加了Broadcast的暂停和继续功能: 某些应用截屏失 ...

  6. java.lang.NullPointerException一个低级的解决方法

    java.lang.NullPointerException 这次因为调用了类的方法的时候忘记了new对象了 导致该对象为空

  7. sql server中嵌套事务*

    转自 https://www.cnblogs.com/guanjie20/archive/2013/02/17/2914488.html 我们在写事务时经常遇到的问题如下: 消息 266,级别 16, ...

  8. Linux分页机制之概述--Linux内存管理(六)

    1 分页机制 在虚拟内存中,页表是个映射表的概念, 即从进程能理解的线性地址(linear address)映射到存储器上的物理地址(phisical address). 很显然,这个页表是需要常驻内 ...

  9. drf 教程

    1, 序列化 Serialization 创建一个新环境 在做其他事之前,我们会用virtualenv创建一个新的虚拟环境.这将确保我们的包配置与我们正在工作的其他项目完全隔离. virtualenv ...

  10. go语言学习-常用命令(四)

    go常用命令 go get:获取远程包(得装git) go run:直接运行程序(写代码时调试用) go build:测试编译,检查是否有编译错误 go fmt:格式化代码(一般不咋用,IDE都自带了 ...