好的LCT板子和一句话
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板子和一句话的更多相关文章
- BZOJ 2049 SDOI2008 洞穴勘测 LCT板子
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2049 题意概述:给出N个点,一开始不连通,M次操作,删边加边,保证图是一个森林,询问两点连 ...
- 沉迷Link-Cut tree无法自拔之:[BZOJ2049]洞穴勘探(蒟蒻的LCT板子)
来自蒟蒻 \(Hero \_of \_Someone\) 的 \(LCT\) 学习笔记 最近学了一波 \(LCT\) , 于是怒刷 \(LCT\) 合集...... $ $ 学的时候借鉴了 Clove ...
- LCT板子
粘板子: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; c ...
- 一堆LCT板子
搞了一上午LCT,真是累死了-- 以前总觉得LCT高大上不好学不好打,今天打了几遍感觉还可以嘛= =反正现在的水平应付不太难的LCT题也够用了,就这样好了,接下来专心搞网络流. 话说以前一直YY不出来 ...
- BZOJ 2002 LCT板子题
思路: LCT啊... (分块也行) 不过YOUSIKI出了一道“弹飞大爷” 就不能用分块水过去了 //By SiriusRen #include <cstdio> #include &l ...
- 洛谷P3203 [HNOI2010]弹飞绵羊(LCT,Splay)
洛谷题目传送门 关于LCT的问题详见我的LCT总结 思路分析 首先分析一下题意.对于每个弹力装置,有且仅有一个位置可以弹到.把这样的一种关系可以视作边. 然后,每个装置一定会往后弹,这不就代表不存在环 ...
- bzoj 2049: [Sdoi2008]Cave 洞穴勘测 (LCT)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2049 题面: 2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 1 ...
- ☆ [NOI2014] 魔法森林 「LCT动态维护最小生成树」
题目类型:\(LCT\)动态维护最小生成树 传送门:>Here< 题意:带权无向图,每条边有权值\(a[i],b[i]\).要求一条从\(1\)到\(N\)的路径,使得这条路径上的\(Ma ...
- LCT模板(指针版)
本来是想做THUWC2017的泰勒展开xLCT题的-- 然后觉得数组写很麻烦-- 然后就决定挑战指针版-- 然后写得全是BUG-- 与BUG鏖战三千年后,有了这个指针版LCT板子! #include ...
随机推荐
- Leetcode 第133场周赛解题报告
今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...
- 第10章 使用密码保护API - Identity Server 4 中文文档(v1.0.0)
OAuth 2.0资源所有者密码授权允许客户端向令牌服务发送用户名和密码,并获取代表该用户的访问令牌. 除了无法承载浏览器的旧应用程序之外,规范通常建议不要使用资源所有者密码授予.一般来说,当您要对用 ...
- Electron 创建一个空白的界面
添加应用 首先添加一个Lorikeet版本的Electron应用. 'use strict' const electron = require('electron'); const app = ele ...
- Apex 单元测试辅助函数简介
startTest和stopTest的使用 在Apex的Test类中,有startTest和stopTest两个函数.这两个函数经常配对使用. 每个单元测试函数都只能调用它们一次. startTest ...
- MAC终端常用语法
这篇文章的重点不在于说是对终端语法的讲解,而是方便大家做语法备忘. 方便查找对应终端语法.所以使用了表格形式对常用终端语法进行了汇总, 但是并没有很多的讲解部分. 当然了这里记录的也都是十分基础的语法 ...
- 南京邮电大学java第四次实验报告
实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 6 月 ...
- Hasse神舟笔记本卡logo解决,刷BIOS方法,教你修复神船
我的电脑是神舟战神K660E i7 d7的,前两天装Windows10,Ubuntu,MAC OS Mojave,PE 一堆操作,使用bootice重建uefi引导,结果在前几天,我删了一个重复的ue ...
- Axure RP 8 注册码
升级了8.1.0.3377版本后,需要使用下面这组注册码 许可:zdfans.com 重点:gP5uuK2gH + iIVO3YFZwoKyxAdHpXRGNnZWN8Obntqv7 ++ FF3pA ...
- java中split特殊符号
关于点的问题是用string.split("[.]") 解决. 关于竖线的问题用 string.split("\\|")解决. 关于星号的问题用 string. ...
- sqlserver数据库触发器调用外部exe
sqlserver数据库触发器调用外部exe,同事可以选择参入参数! sqlserver使用 master..xp_cmdshell 进行外部exe的执行. 使用master..xp_cmdshell ...