巴特西
首页
Python
Java
PHP
IOS
Andorid
NodeJS
JavaScript
HTML5
LCT模板提交loj
洛谷P3366 【模板】最小生成树(LCT)
[模板]最小生成树 题目传送门 解题思路 用LCT来维护最小生成树. 除了把各顶点作为节点外,每条边也都视为一个节点.对于要加入的边\(e\),检查其两顶点\(x\)和\(y\)是否在同一棵树中,如果不在,则让\(e\)连接\(x\)和\(y\)如果在一棵树中,则找到\(x\)到\(y\)的路径上最长的边,与\(e\)比较,如果\(e\)更小,则删掉那条边,再把\(e\)加入.只要维护一下最长的边的编号即可. 代码如下 #include <bits/stdc++.h> using namesp
LCT模板
之前一直用的LCT模板,因为其实个人对LCT和Splay不是很熟,所以用起来总觉得略略的坑爹,过了一段时间就忘了,但事实上很多裸的LCT要改的东西是不多的,所以今天写了些注释,以后可能套起模板来会得心应手一点吧- -0 #pragma warning(disable:4996) #include <iostream> #include <cstring> #include <string> #include <cstdio> #include <vec
LCT 模板及套路总结
这一个月貌似已经考了无数次\(LCT\)了..... 保险起见还是来一发总结吧..... A. LCT 模板 \(LCT\) 是由大名鼎鼎的 \(Tarjan\) 老爷发明的. 主要是用来维护树上路径问题的. 它的神奇之处在于可以直接把一条路径抠出来维护. 其实就是维护树链剖分中的重链与轻链. 网上相关教程很多,直接给板子(其实是我懒得打E_E) 0. Splay代码: \(LCT\)是以\(Splay\) 为实现基础的: IL bool Son(RG int x){return ch[fa[x
[洛谷P1501] [国家集训队]Tree II(LCT模板)
传送门 这是一道LCT的板子题,说白了就是在LCT上支持线段树2的操作. 所以我只是来存一个板子,并不会讲什么(再说我也不会,只能误人子弟2333). 不过代码里的注释可以参考一下. Code #include<bits/stdc++.h> using namespace std; typedef unsigned int uint; ; ; inline int read(){ ,w=;; while(!isdigit(ch)) w|=ch=='-',ch=getchar(); )+(x&l
LuoguP3690 【模板】Link Cut Tree (动态树) LCT模板
P3690 [模板]Link Cut Tree (动态树) 题目背景 动态树 题目描述 给定n个点以及每个点的权值,要你处理接下来的m个操作.操作有4种.操作从0到3编号.点从1到n编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和.保证x到y是联通的. 1:后接两个整数(x,y),代表连接x到y,若x到y已经联通则无需连接. 2:后接两个整数(x,y),代表删除边(x,y),不保证边(x,y)存在. 3:后接两个整数(x,y),代表将点x上的权值变成y. 输入输出
BZOJ2002 &; LCT模板(分块不会搞)
题意: 看题. 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿 着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置, 则绵羊被弹飞.绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞.为了使得游戏更有趣,Lostmonkey可以修改某个弹力装置的弹力系数,任何 时候弹力系数均为正整数. n<=20w. SO
bzoj2049-洞穴勘测(动态树lct模板题)
Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好两个洞穴.假如两个洞穴可以通过一条或者多条通道按一定顺序连接起来,那么这两个洞穴就是连通的,按顺序连接在一起的这些通道则被称之为这两个洞穴之间的一条路径.洞穴都十分坚固无法破坏,然而通道不太稳定,时常因为外界影响而发生改变,比如,根据有关仪器的监测结果,123号洞穴和127号洞穴之间有时会出现一条通
Luogu 3690 LCT - 模板
推荐几篇比较好的博客: FlashHu 的 讲解比较好 : 传送门 Candy 的 代码~ : 传送门 以及神犇Angel_Kitty的 学习笔记: 传送门 Code V 模板 #include<cstdio> #include<cstring> #include<algorithm> #define rd read() #define ll long long using namespace std; ; ; int n, m; int read() { , p =
BZOJ 1180 / 2843 LCT模板题_双倍经验
一大早上到机房想先拍一下模板,热热身. 结果....对照着染色敲的 LCT 竟然死活也调不过去(你说我抄都能抄错) 干脆自己重新敲了一遍,10min就敲完了....... 还是要相信自己 Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) using namespace std; #define maxn 40000 struct LCT { #define
BZOJ3282: Tree (LCT模板)
Description 给定N个点以及每个点的权值,要你处理接下来的M个操作. 操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和. 保证x到y是联通的. 1:后接两个整数(x,y),代表连接x到y,若x到Y已经联通则无需连接. 2:后接两个整数(x,y),代表删除边(x,y),不保证边(x,y)存在. 3:后接两个整数(x,y),代表将点X上的权值变成Y. Input 第1行两个整数,分别为N和M,代表点数和操作数. 第2行
LCT模板(学习笔记)(洛谷3690)(加边,删边,修改点权)
最近学习了一波LCT qwq 强势安利Flashhu的博客!!!!! 真的特别详细(可惜我不会弄链接) 如果有想要学习\(LCT\)的同学,可以直接看他的博客 我这里就简单写一点自己的体会啊. \(LCT\)大致上就是一个支持加边,删边,维护子树信息,路径修改,维护路径信息的一个数据结构 本质上LCT是一个实虚链划分 代码的话,主要是分为几个部分 首先是判断这个点是不是根 和 其儿子关系,也就是\(notroot\)和\(son\)函数 int son(int x) { if (ch[fa[x]
LCT模板(BZOJ2631)
用LCT实现路径加,路径乘,断开及加上一条边(保证是树),查询路径和. #include <cstdio> #include <algorithm> #define l(x) t[x].s[0] #define r(x) t[x].s[1] #define f(x) t[x].f #define lc(x) (r(f(x)) == x) #define int unsigned int , p = ; ]; int n,m,x,y,c,tp,q[N]; ],sm,sz,mu,ad,
LCT模板(指针版)
本来是想做THUWC2017的泰勒展开xLCT题的-- 然后觉得数组写很麻烦-- 然后就决定挑战指针版-- 然后写得全是BUG-- 与BUG鏖战三千年后,有了这个指针版LCT板子! #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <iostream> #define space putchar(' ') #define ente
【BZOJ2049,2631,3282,1180】LCT模板四连A
好吧我并不想讲LCT 只是贴4个代码~ [BZOJ2049][Sdoi2008]Cave 洞穴勘测 #include <cstdio> #include <cstring> #include <iostream> #define isr(A) (s[s[A].fa].ch[0]!=A&&s[s[A].fa].ch[1]!=A) using namespace std; const int maxn=10010; int n,m; struct NODE
link cut tree模板(LCT模板)
update:2017.09.26 #include <bits/stdc++.h> using namespace std; struct Link_Cut_Tree { + ; ], fa[MAXN], rev[MAXN], sz[MAXN]; int sk[MAXN]; bool isroot(int x) { ] != x && ch[fa[x]][] != x; } void reverse(int x) { rev[x] ^= , swap(ch[x][],ch[x
洛谷P3690 LCT模板
题目:https://www.luogu.org/problemnew/show/P3690 自己竟然从没有钻研过LCT上的连通性问题! 于是被最后一个点卡了,似乎因为 find 函数只能找出连通性而不能判断有没有直接相连的边: 所以还是直接在 cut 函数里判断一下好了. (注:第9个点时T时不T的,不想去管它了.) 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace
[SDOI2008] 洞穴勘测 (LCT模板)
bzoj 2049 传送门 洛谷P2147 传送门 这个大佬的LCT详解超级棒的! Link-Cut Tree的基本思路是用splay的森林维护一条条树链. splay的森林,顾名思义,就是若干splay组成的东西. 每个splay都有一个根节点,所以lct里的splay不能记录根节点,因为根节点有好多. 我们开一个bool数组记录每个点是否为根节点. 每个splay都维护一条重链,重链之间的轻链在splay里只从儿子指向父亲,而父亲并没有这个儿子. 就像图里的红箭头. 每个splay都表示一条
LCT模板(无讲解)
怎么说呢,照着打一遍就自然理解了,再打一遍就会背了,再打一遍就会推了. // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; ; ],val[maxn],ans[maxn],n,m,opt,x,y,z; bool tag[maxn]; ]==x||son[fa[x]][]==x;} ]]^ans[son[x][]]^val[x];} void pushr(int x) { swap(son[x][],son
bzoj2002(lct模板)
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; ; struct node{ int ls,rs,fa,is_root; }tr[maxn]; int n,m,siz[maxn],k[maxn]; void update(int x){ siz[x]=; if(tr[x].l
[BZOJ2049][Sdoi2008]Cave 洞穴勘测 LCT模板
2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 9705 Solved: 4674[Submit][Status][Discuss] Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好两个洞穴.假如两个洞穴可以通过一条或者多条通道按一定顺序连接起来
重置一发LCT模板
加边.删边.单点修改.链上异或和 #include <bits/stdc++.h> using namespace std; inline void read(int &num) { char ch; int flg = 1; while(!isdigit(ch=getchar()))if(ch=='-')flg = -flg; for(num=0; isdigit(ch); num=num*10+ch-'0', ch=getchar()); num*=flg; } const int
热门专题
markdown 字体颜色
vs2008 msbuild预编译头
P2141. [NOIP2014 普及组] 珠心算测验
微信小程序开发能不能同时打开两个项目
元音字母读本身的音是不是针对单音节说的
动态web项目添加mysql
mysql load data导入乱码
altium 走线倒角
linux统计压缩文件里内容行数
sklearn svc 可视化
elasticsearch安装教程centos
C# winform 动态获取控件名称赋值
Error 1001 获取AutoCAD安装信息时失败
sockaddr_in获取端口
java遍历enumerate
phpexcel下载的文件office2003打不开
pyspark 数据源api
mac 如何重新安装苹果系统
promise实现一个函数执行完3s后再执行下一个函数
linux 修改eth0 eth1