首页 > TAG信息列表 > 树剖

P3250 [HNOI2016] 网络 (树剖+堆)

本题有插入路径和删除路径,在每个节点维护插入堆和删除堆,查询时两者top一样则一直弹出。如果每个节点维护的是经过他的路径,显然有些不好处理,正难则反,每个点维护不经过他的路径,那么x节点出了故障时,我们就查询x,查询到的就是x出故障后不受影响的路径。 (洛谷上有一个点一直过不了,似乎是

20220713树剖

A 树剖求lca 板子 C 一道树剖板子题 D 树剖题单里混进了一个奇怪的东西 根号分治 对于跳的步长大于sqrt(n),我们直接暴力跳就行了 而步长小于时维护从某点一直以某一步长跳到根的和,然后使用差分求得答案。 点击查看代码 #include<bits/stdc++.h> #define M 50005 #define N 250 us

SP4155

题解里貌似没有树链剖分的写法?那蒟蒻来一发。 题目给定 \(n\) 个开始时不连通的点,每个点有点权,要求满足三个操作。 判断两个输入的节点之间是否连通,如果不连通则在两点之间连边。 单点修改。 输出两个输入的节点之间路径长度。 因为题目没有强制在线,所以可以尝试使用离线建树,然

CF1254D

算是一个套路题吧 我一开始考虑的时候,想了一个 \(O(n\sqrt n\log n)\) 的做法,但是通过调整块长好像可以做到 \(O(n\sqrt {n\log n})\) 大概思路就是考虑根号分治。对于每一次修改来说,如果儿子的个数小于 B 个,直接考虑对每个儿子树剖修改一下就行,而对于大于 B 个儿子的点,直接考虑记

「NOIP普及组模拟赛20180519」旅游

想出一个算法发现有困难时,第一时间不是弃掉它,而是努力去攻坚克难 link 思维题。 乍一看像一个树剖的套路题,但又感觉做不了。原因是寻常的树剖是 \(x\) 向上走,\(y\) 向上走,然后求交集。但是这里是求不相交的部分。往上跑直接加贡献是走不了的。原因是相交的部分不能要。 我做

牛客提高组模拟4 快速访问——一道树剖“板子”题

link 为什么我会把树剖的常见 trick 忘了啊。。。 trick 1:lca -> x 向上跑 + y 向上跑 trick 2:深度可以用这个点到根点的个数表示 化简一下:\(ans=(d_i+d_j-2d_{LCA(i,j)})^2=d_i^2+d_j^2+4d^2_{LCA(i,j)}+2d_id_j-2d_id_{LCA(i,j)}-2d_jd_{LCA(i,j)}\) 考虑怎么修改/统计答案。第

洛谷 P4211 [LNOI2014]LCA(树剖+线段树,差分)

传送门 解题思路 调了一晚上。。紫题果然不是我现在能做的。。 首先考虑如何把多个deep的和转化成可以快速求出来的东西: 我们可以对于每个[l,r],把每个点到根节点的路径上的点权++(初始为0),这样对于每个询问(l,r,z),答案即为z到根节点的路径上的点权和。-----操作1 但是对于每个询问都

2021.8.22北高暑训

上午主要巩固了一下所学知识 然后是与zx同学共同探讨树剖LCA 这时zx同学问了个问题:树剖LCA和倍增LCA有什么区别?? 我思考了一下,便说:倍增好打[doge] 下午,写了一套提高组初赛的模拟题 拿了61.5分,但高一很多学长都80,90分,看来还要多努力. 今天又TM是开森的一天呢!

洛谷 P3379 【模板】最近公共祖先(LCA)题解(树剖做法)

题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入格式 第一行包含三个正整数 N,M,S 分别表示树的结点个数、询问的个数和树根结点的序号。 接下来 N−1 行每行包含两个正整数 x,y,表示 x 结点和 y 结点之间有一条直接连接的边(数据保证可以构

NOIP模拟39:树

  他们说这题与之前树剖的一道叫染色的题类似,好像真的是这样。   就是我们考虑这样一件事,就是每一次染白都可以看作是给链上的点打一个时间戳,那么可以发现,如果相邻的两个点的时间戳不同,那么他们之间的边一定是黑色。   我们可以用树剖+线段树维护时间戳,查询时记得考虑轻边的

HDU 5293 Tree chain problem (树形dp + 树剖 + LCA)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5293 \(sum[u]\) 表示子树 \(dp\) 值的和,\(dp[u]\) 表示子树 \(u\) 的答案,这里我用 \(dp[u][0]\) 表示 \(sum\), \(dp[u][1]\) 表示 \(dp\) 值。考虑以 \(u\) 结点为 \(lca\) 的链,如果不放这条链,答案就是子节点 \(dp\) 值之和,

[笔记] 树形问题

树形问题专题 图论悬首绝对不容错过的经典树形问题! Tip:本文不会详细分析树剖,我已经有一篇文章专门讲树剖了。 LCA DFS 序 树上差分 树的直径 树的重心

【牛客练习赛71-C】数学考试

题目 题目链接:https://ac.nowcoder.com/acm/contest/7745/C 牛牛在树剖姐姐的数学考试里出了一个题,但是树剖姐姐不会做,于是她向您求助。 求 \(1\sim n\) 的排列,有 \(m\) 个限制条件,第 \(i\) 个限制条件 \(p_i\) 表示前 \(p_i\) 个数不能是 \(1\sim p_i\) 的排列,求符合要求的排列的

松鼠的新家 - LCA/树剖/树的查分

[JLOI2014]松鼠的新家 题目传送门 题目大意: 对给定路径上的所有点进行区间加和,最后进行单点查询。 分析: 一道树上差分裸题,当然也可以用树剖来做,不过因为不用进行修改,树链剖分就有些大材小用了。对于这种不用修改的区间的修改,我们最先能想到差分。 普通差分: 对于数组a[i],如果我们

【积累】【树】2020牛客多校 A National Pandemic(树剖)

2020牛客多校 A National Pandemic 题意 一棵树 ,三种操作: 1,一个中心城市 x,所有城市 y 的值+=w-dist(x,y) 2,将城市x的值与0取min 3,询问单点的值。 官方题解 对于1操作,我们考虑一次修改对y来说会增加w-dis(x,y) w-dis(x,y)=w-(dep[x]+dep[y]-2*dep[lca])=w-dep[x]-dep[y]+2dep[lca]

[BJWC2010] 严格次小生成树(kruskal+树剖)

这题果然是模板题 一堆做法 但是根本思想是一样的 都是先跑一遍最小生成树,然后维护一下路径上最大值和小于最大值的最大值 主要的实现方法有三种 1.kruskal+倍增+lca 复杂度是O(mlogm)O(mlogm)O(mlogm),优点是复杂度低,常熟不是特别大,代码短,缺点是实现细节多 2.kruskal+lct 复

芝士:树剖

背景 对于一棵树上我们需要查找两个点之间的距离时,很多人的第一反应就是LCA 但是如果加上修改操作呢?就只能用树剖了 操作 基本变量 重量:子树的大小 重儿子:就是最重的那个儿子, 轻儿子:不是重儿子 重链:重儿子组成的链 思想 基于路径的分治, 用线段树来维护重链, 复杂度证明 我们设当前

牛客 情报传递 树剖+主席树

题目链接:https://ac.nowcoder.com/acm/problem/20570   要统计X到Y上的点的数量以及危险值大于C的点的数量,对树上两点的路径进行查询可以用树链剖分,在某一个时间点t,我们要求出X到Y路径上危险值大于C的点的数量,我们可以把它转化为求在时间t-C-1之前开始收集情报的情报员数量,因为

bzoj2402 陶陶的难题II 分数规划+树剖+线段树维护凸壳+二分

题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2402 题解 看上去很像分数规划的模型。于是就二分吧。令 \[ \begin{align*}\frac{y_i+q_j}{x_i+p_j} &\geq mid\\y_i+q_j &\geq mid(x_i+p_j)\\(y_i - mid\cdot x_i) + (q_j - mid\cdot p_j) & \geq 0\end{align*} \]

【luogu3950】部落冲突--树剖

题目背景 在一个叫做Travian的世界里,生活着各个大大小小的部落。其中最为强大的是罗马、高卢和日耳曼。他们之间为了争夺资源和土地,进行了无数次的战斗。期间诞生了众多家喻户晓的英雄人物,也留下了许多可歌可泣的动人故事。 其中,在大大小小的部落之间,会有一些道路相连,这些道路

动态开点线段树

练习树剖的时候找到了 https://www.luogu.org/problem/P3313 于是顺便学习了一下动态开点线段树。 这里写一点心得。 很多线段树不是满二叉树就会造成空间浪费,而动态开点就可以解决这个问题。那么怎么动态开点呢? 结合这题来看一下吧。  

树剖+仔细读题+(细心差错(针对博主))

NOI2015 软件包管器 https://www.luogu.org/problem/P2146 题意 维护一棵树,每个节点都有一个为0或1的值,初始值全为0 需要支持 将一条链上的点都变成1, 将一棵子树中的点都变成0, 并统计每次操作改变了多少点的状态。 分析 每次修改链的时候,要记住,他们可能不在同一条重链上(其它题目里

清北学堂-计树-树剖-动态开点

输入样例: 35 53 2 1 1 11 22 32 53 42 3 4 11 2 12 3 5 12 1 5 32 4 4 35 51 2 1 2 21 22 32 43 51 1 21 3 21 2 22 4 2 22 1 4 15 52 1 1 1 11 21 42 34 52 4 2 11 1 12 1 4 12 3 3 12 2 2 2 输出样例: 2310202210    数据范围: 思路: 树剖,动态开点,线段树 代码: #include<cs

P3979 遥远的国度 树剖

P3979 遥远的国度 树剖 题面 需要想一下的树剖题,对于询问三需要处理换跟后的情况。我们以1为树根跑一遍剖分,对于换跟进行分类讨论,算出实际答案。讨论有三种情况: (以1为树根的树上) 跟在询问节点的祖先上:因为不影响,所以直接求子树最小值 跟即询问节点:直接查全树 跟在询问节点子树中:画

20190714-考试总结

试题为内部资料,不公开。   话说在法国国庆日这天考试…… T1 看到第一题,额嗯嗯,我还是第一次见到这么样的题,等,比,数,列? 头脑中瞬间闪过$\frac{a_1(1-q^n)}{1-q}$,还有乘公比错位相减什么的(被文化课荼毒) 仔细一看,还是打暴力吧,啦啦的骗了40分(TLE),内个,为啥错的暴力可AC? 插曲:打了一会,