
LCT
文章平均质量分 55
QAQQQQQQQQQQQ
菜
展开
-
【模板】Link-Cut-Tree
模板题 LCT的讲解略过···参考别人的博客 简单来说就是用splaysplaysplay维护一棵树的某条链上的信息 主要操作有: accessaccessaccess:连通一个点到根的链 makerootmakerootmakeroot:将xxx变成根 findrootfindrootfindroot:找到树根 linklinklink:将两个点连上边 cutcutcut:删掉两个点之间的边 s...原创 2018-11-20 23:29:17 · 109 阅读 · 0 评论 -
LCT--luogu P2173 [ZJOI2012]网络
传送门 LCTLCTLCT裸题,开ccc个lctlctlct就好了 板子还是不太熟qwqqwqqwq 不过这道题的修改边的操作还是比较有意思的 一开始写的复杂而且还不太对,改了之后就AAA了 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #inclu...原创 2018-11-21 18:08:07 · 158 阅读 · 0 评论 -
LCT+树剖+线段树+dfs序--bzoj3779: 重组病毒
传送门 一道数据结构综合神题(敲的我手都要断了 首先看三个操作,每次一个新病毒会感染一条链,而每个点用的时间就是到根的链上不同病毒的数量和,查询的时候相当于查整个子树的时间和。 很重要的一个思想是,当一个新病毒感染时,就像LCTLCTLCT里的accessaccessaccess一样,当一条虚边变成实边,说明它遇到了一个不一样的病毒,就要对它祖宗的另外一些子树sum+1sum+1sum+1,这个的...原创 2018-11-23 16:55:25 · 243 阅读 · 0 评论 -
LCT+树剖+线段树--bzoj4817: [Sdoi2017]树点涂色
传送门 和bzoj3379有异曲同工之妙 也是用树剖+线段树的思想维护dfsdfsdfs序,然后查询区间最大值 1操作就是lctlctlct的accessaccessaccess,同bzoj3379 2操作就是f(x)+f(y)−2×f(lca(x,y))f(x)+f(y)-2\times f(lca(x,y))f(x)+f(y)−2×f(lca(x,y)),也可以用树剖+线段树 3操作就是线段树...原创 2018-11-29 11:45:00 · 178 阅读 · 0 评论 -
LCT(维护加乘标记)--luogu P1501 [国家集训队]Tree II
传送门 就是链上维护加和乘的标记,先乘后加 没开long long wa到怀疑人生祭 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #define N 100005 #define ls ch[x][0] ...原创 2018-11-30 14:58:49 · 209 阅读 · 0 评论 -
LCT(维护边双)--bzoj1969: [Ahoi2005]LANE 航线规划
传送门 用LCTLCTLCT维护边双,删边不好操作,可以离线后变成加边。 如果两个点u,vu,vu,v已经联通,再加一条(u,v)(u,v)(u,v)的边就会让它变成边双,所以可以用并查集维护联通性。 当一条链变成边双就把它在LCTLCTLCT上缩成一个点,具体的可以直接在splaysplaysplay上dfsdfsdfs把所有点的父亲都修改成一个点,而做其他操作如splaysplaysplay和...原创 2018-12-02 19:06:32 · 326 阅读 · 0 评论 -
LCT(动态最小生成树)+kruscal--bzoj2594: [Wc2006]水管局长数据加强版
传送门 (好久不打lct板子都快忘了 lct维护边权的套路就是把边拆成点,这个点向两边的点分别连边,点权就是边权,原树上的点根据需要可以设点权为inf或者-inf 动态最小生成树离线删边变加边,就是在lctlctlct中记录mx[x]mx[x]mx[x]和id[x]id[x]id[x]表示子树点权中最大的点权和点的编号,加入一条新边(x,y)(x,y)(x,y)的时候,如果两点没有联通就连起来,如...原创 2018-12-21 19:05:09 · 382 阅读 · 0 评论