- 2024-10-31树链剖分
轻重链剖分性质重链重链内编号连续,可以用线段树维护一些值路径对于树上任意两点\(x,y\),它们的路径经过的重链不超过\(logn\)条树剖正是运用这种方式,把1个修改/询问变成\(logn\)个修改/询问,然后高效求解注意:树剖的作用是将树上问题拆成\(logn\)个序列问题,并不是所有树剖都一
- 2024-10-222022.10.26
树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树剖!树
- 2024-10-06树剖总结
前言最近被树剖整得很难受,于是有了这一篇总结。灵感来源于这几道题:[Ynoi2017]由乃的OJ,[SDOI2011]染色,[TJOI2015]旅游。关于树剖树剖解决的问题一般是动态且与树上的简单路径有关,就是将树上的问题转变到链上,然后用数据结构(线段树)来维护一些复杂信息。一般解决树剖会遇到的
- 2024-09-14学习资料
二分答案递归与分治深搜差分和前缀和贪心背包STL双指针图和树的基础和遍历最短路算法最小生成树线段树和树状数组ST表组合数学树形DP线性代数树剖树剖
- 2024-07-282024暑假总结2
7.22——数据结构上课+做题首先讲的是树剖。树剖核心就是根据树的一些特征(如深度、最大子树),将一棵树拆分成\(\log{n}\)个连续的树链,使得树上问题转化为线性问题,最后再用数据结构维护区间或是直接dp之类。由于我之前就比较熟悉树剖、还写过一些题,所以听得非常轻松,但是水平还
- 2024-06-06高考小集训!
6.5高考假结束,集训开始!给放了环形和后效性处理DP第一题的讲解视频,然后告诉我们第二天要考试;什么抽象操作。而且由于高考,本着“一切以高三为中心”的思路,给我们弄了一堆新规矩:高三没睡我们先睡,高三起了我们才能起,晚休延长30min,午休延长20min;防止和高三抢饭,我们提前一
- 2024-05-22树剖(不太会)
前情提要,我主要看的是这位大佬的讲解,用的是谷的代码,所以会有点奇怪大概就是这么个意思dfs1用来处理树的dfs序,处理出重链大小和对应的重儿子voiddfs1(intnow){ son[now]=-1; siz[now]=1; for(inti=head[now];i;i=edge[i].from){ intto=edge[i].to; if(dep[to])c
- 2024-05-13C120 树剖+李超树 P4069 [SDOI2016] 游戏
视频链接:C120树剖+李超树P4069[SDOI2016]游戏_哔哩哔哩_bilibili D12LuoguP3384【模板】轻重链剖分/树链剖分-董晓-博客园(cnblogs.com) LuoguP4069[SDOI2016]游戏//树剖+李超树O(nlognlognlogn)#include<iostream>#include<cstring>#in
- 2024-02-28ABC294 EFG 题解
E-2xNGrid题意给你一个\(2\timesL\)的网格,但是\(L\)很大,所以用以下形式压缩:将同一个颜色的连续段视为一个整体,那么每一行就可以用若干个二元组\((a_i,b_i)\)表示,其中\(a_i\)为颜色,\(b_i\)为连续段的长度。保证长度\(\le10^5\)。输入以上述形式压缩,现在让你求出
- 2023-10-27树剖小总结
P2680[NOIP2015提高组]运输计划要求经过边的询问的最大值,和不经过边的询问的最大值,直接用线段树维护就行了。然后就是二分做法,比较合理。P4219[BJOI2014]大融合首先考虑暴力做法,随便钦定一个树根,然后维护子树size即可。每次连边,比如x作为y的父亲,那么x及其祖先的siz
- 2023-08-22『复习笔记』树链剖分(重链剖分)
前言(事出必有因)今天模拟赛有一道线段树+LCA的题,考场上码了两个小时,结果pushup错了,结果线段树调完了,发现TLE了,原来是求LCA炸了。。因为我用的倍增(我就是倍增狗你能把我怎么样),但是倍增的一个重要问题就是log都跑满了,但是树剖跑不满log,别问我为什么不用Tarjan,因为这题是在线的不好
- 2023-07-29luogu P4069 [SDOI2016] 游戏 题解【李超树+树剖】
目录题目描述解题思路code题目描述P4069[SDOI2016]游戏一棵树,树上有\(n\)个节点,最初每个节点上有\(1\)个数字:\(123456789123456789\)。有两种操作:\(\centerdot\)选择\(s,t\)两个节点,将路径上的每一个点都变多(\(1\)个变\(2\)个)数字:\(a\timesdis+b\),其中\(dis\)表示该节点
- 2023-07-01DistanceQueriesonaTree
[ABC294G]DistanceQueriesonaTree首先树剖+线段树肯定可以直接用树剖模板过掉,但是带两个\(\log\)。我们考虑更优秀的做法。拟定\(1\)为根,首先维护前缀\(dis[i]\)为从\(1\simi\)的路径上的所有边权之和(这里记边权为在下面的点的点权)。显然,没有修改时答案是\(dis_a
- 2023-03-18树剖详解+习题
主要思想树链剖分(简称树剖)的思想在于将一棵树剖分为若干条链,从而转化为一个线性序列并使用数据结构维护来解决问题。以下主要讲两种:一种是重链剖分,一种是长链剖分。重链
- 2023-02-26周报
本周总结本周考试周,基本在复习,考完试简单刷了点题。大专题杂小专题线段树构造题目完成情况cf4题abc1题线段树3题树剖1题
- 2023-02-24树剖练习题题解总和(动态更新)
这篇博客的练习题题解1、P3384【模板】轻重链剖分/树链剖分模板题,详见此#include<iostream>#include<cstdio>#include<vector>usingnamespacestd;intn,m,r,p,t[
- 2023-01-01动态树 树剖
//题意:有一棵树,有两个指令//指令1:0udelta,这棵树长出了一些果子,即u的子树中的每个节点都会长出delta个果子//指令2:1ku1v1...ukvk,小明希望你求出
- 2022-11-19nove.19 Qtree1(还是树剖)
https://www.luogu.com.cn/problem/P4114注意在跳重链的时候链顶要考虑(即不能dfn[top[u]]+1,dfn[u])因为跳完一条重链,u=faz[top[u]],此后再跳就没有考虑到链顶与链顶faz的
- 2022-11-13nove.13 月下毛景树 [树剖]
月下毛景树复健记录树剖,权值下放树剖的准备:第一次DFS,可以记录深度、子树大小、父亲、重儿子;第二次可以记录重链顶、DFS序本题需要维护的数组:区间最大值lazy_tag,有
- 2022-10-31【XSY3972】树与图(树形dp,树剖,分治NTT)
题面树与图题解不难发现本题可以转化成以下题目:给定一个\(n\)个点的有根树,你可以在树上选择\(k\)个点,满足对于任意两个点都不互为祖先关系,且从根到每个叶子的路
- 2022-10-283.CF343D Water Tree 树剖+线段树区间覆盖
3.CF343DWaterTree树剖+线段树区间覆盖线段树维护树上覆盖问题,树剖序列化维护序列覆盖。洛谷传送门:CF343DWaterTree-洛谷|计算机科学教育新生态(luogu.com.c
- 2022-10-22P4679 题解
前言题目传送门!更好的阅读体验?大力树剖!做树剖时,大家可以膜拜@liruiduan2巨佬,他可以在考场上码200行的树剖题目。思路代码有点长。可以用这份代码对拍。/*树剖
- 2022-10-15luoguP1505旅游(处理边权的树剖)
/*luogu1505非常简单的处理边权的树剖题。在树上将一条边定向,把这条边的权值赋给这条边的出点树剖的时候不计算lca权值即可*/#include<bits/stdc
- 2022-10-06浅谈树链剖分
树链剖分是把一棵树分割成若干条链,以便于维护信息的一种方法,其中最常用的是重链剖分(HeavyPathDecomposition,重路径分解),所以一般提到树链剖分或树剖都是指重链剖分。除此
- 2022-09-28To Do List
再不卷就退役了!!NKOJ赛题表2:C可变地图(DDP)作业表4:P01子序列(DDP)作业表5:a小Y的背包计数问题(根号分治)作业表6:D盒子与玩具(容斥)E自助小