
Link_Cut_Tree
青烟绕指柔!
我不怕千万人阻挡,只怕自己投降。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDU - 5398
题目链接:HDU - 5398显然这个东西是可以预处理的。然后我们依次加点,显然每个点只会和因子匹配最优。然后用LCT维护最大生成树即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=2e6+10;int n,idx,w[N],f[N]; long lo原创 2020-08-15 21:58:17 · 256 阅读 · 0 评论 -
HDU - 6394
题目链接:HDU - 6394每个点和向上跳能到的点连边构成一棵树,然后建立一个跳出去的虚拟节点。那么能跳到的点就是虚拟节点和当前点 split 一条链之后的size-1.AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=1e5+10;struct LCT{原创 2020-07-30 23:02:08 · 271 阅读 · 0 评论 -
[NOI2014]魔法森林
题目链接:[NOI2014]魔法森林显然我们如果知道最大的a,那么其他我们就只需要维护1->n的最小最大值路径了。所以维护一颗b的mst,然后每次split一条1->n的链即可。然后lct再维护链上最大值和最大值的编号。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;c原创 2020-06-19 11:25:22 · 288 阅读 · 0 评论 -
[WC2006]水管局长 时间倒流LCT维护MST
题目链接:[WC2006]水管局长 时间倒流LCT维护MST就和普通LCT维护MST一样,只不过我们最开始不加边,先离线之后时间倒流。然后看成加边操作,维护链上最大值的编号,每次比较链上最大值和当前加入的值选择是否更换即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++....原创 2020-01-19 17:56:57 · 254 阅读 · 0 评论 -
[COCI 2009] OTOCI / 极地旅行社
题目描述不久之前,Mirko 建立了一个旅行社,名叫“极地之梦”。这家旅行社在北极附近购买了 nn 座冰岛,并且提供观光服务。当地最受欢迎的当然是帝企鹅了,这些小家伙经常成群结队的游走在各个冰岛之间。Mirko 的旅行社遭受一次重大打击,以至于观光游轮已经不划算了。旅行社将在冰岛之间建造大桥,并用观光巴士来运载游客。Mirko 希望开发一个电脑程序来管理这些大桥的建造过程,以免有不可预料的错...原创 2020-01-19 12:35:36 · 408 阅读 · 0 评论 -
Chino with Rewrite
看到值最大为60,我们可以想到状态压缩,把60个值全部压成二进制。每次动态连接,求链上或的和。当然我们可以离线去树剖,用线段树维护。但是对于会LCT的人,当然我们要用LCT啦,直接LCT维护链上或的和就好了。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#de...原创 2020-01-10 14:17:23 · 464 阅读 · 0 评论 -
[SDOI2011]染色
输出格式对于每个询问操作,输出一行答案。输入输出样例输入 #1复制6 52 2 1 2 1 11 21 32 42 52 6Q 3 5C 2 1 1Q 3 5C 5 1 2Q 3 5输出 #1复制312这道题真的是深有感触,当年写树剖一直过不了,也找不到bug,后来不了了之。然后现在换成LCT就好写多了,考虑的东西少了点。我们用LCT维护链,当前节点...原创 2019-12-19 15:15:13 · 296 阅读 · 0 评论 -
[HNOI2010]弹飞绵羊
题目链接:[HNOI2010]弹飞绵羊国内第一道LCT,所以基本上是裸题。如果我们可以把这个结构想成一棵树,然后如果一个点飞出去,我们可以想成到达另一个节点。所以我们建立一个虚拟节点。然后用LCT维护子树大小,每次从一个点开始,我们对当前点和虚拟节点拉一条链即可。然后输出子树size。AC代码:#pragma GCC optimize(2)#include<bits/stdc...原创 2019-12-18 23:06:34 · 219 阅读 · 0 评论 -
LCT维护MST
以MST的模板为例:题目链接:MST模板LCT维护MST一般是,图存在加边的动态MST,如果是删边,那么我们可以考虑使用时间倒流实现把删边变加边。但是如果是即加边又删边就不行了。对于加边时,如果此两点没有连通,肯定是直接连接。但是如果连接了呢?,,我们就需要用当前的边来替换路径的最大值。然后我们还需要维护当前路径最大边的编号,方便cut断边。LCT维护的点权,但是我们需要边权,所以我们可...原创 2019-12-18 18:29:07 · 354 阅读 · 2 评论 -
部落冲突
题目背景在一个叫做Travian的世界里,生活着各个大大小小的部落。其中最为强大的是罗马、高卢和日耳曼。他们之间为了争夺资源和土地,进行了无数次的战斗。期间诞生了众多家喻户晓的英雄人物,也留下了许多可歌可泣的动人故事。其中,在大大小小的部落之间,会有一些道路相连,这些道路是Travian世界里的重要枢纽,简单起见,你可以把这些部落与部落之间相连的道路看作一颗树,可见每条道路对于Travian世...原创 2019-12-11 12:14:53 · 842 阅读 · 0 评论 -
[国家集训队]Tree II
题目链接:[国家集训队]Tree IIvLCT维护树上链加法和乘法。我们像线段树一样做一个加法标记,和一个乘法标记即可。转移和线段树一样的。因为保证边是合法的,所以我们link和cut时就不必判断了。AC代码:#pragma GCC optimize(2)#include<bits/stdc++.h>#define int long longusing namesp...原创 2019-12-10 23:07:37 · 226 阅读 · 0 评论 -
bzoj 1180 [CROATIAN2009]OTOCI
1180: [CROATIAN2009]OTOCITime Limit: 50 Sec Memory Limit: 128 MBSubmit: 1463 Solved: 941[Submit][Status][Discuss]Description给出n个结点以及每个点初始时对应的权值wi。起始时点与点之间没有连边。有3类操作:1、bridge A B:询问结点A与结点B是否连通。...原创 2019-12-10 21:36:48 · 178 阅读 · 0 评论 -
bzoj 2049 [Sdoi2008]Cave 洞穴勘测
2049: [Sdoi2008]Cave 洞穴勘测Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 11970 Solved: 5988[Submit][Status][Discuss]Description辉辉热衷于洞穴勘测。某天,他按照地图来到了一片被标记为JSZX的洞穴群地区。经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n...原创 2019-12-10 21:16:16 · 187 阅读 · 0 评论 -
Link_Cut_Tree
LCT就是动态树的一种,但是相比Top_Tree来说,处理子树能力不足(但是简单)。LCT利用轻重路径的划分,也就是实边和虚边来实现边的删除和合并。现在来说说LCT的几个重要操作:(默认会splay)access(x) : 让x连到根上面,也就是让根到x的边全部变为实边。所以我们每次让当前节点splay到根,改变儿子,向上pushup传递信息即可。makeroot(x) : 让x为根,...原创 2019-12-10 13:04:29 · 206 阅读 · 0 评论