树链剖分
ws_yzy
一如OI情似海
展开
-
BZOJ 3732: Network|Kruskal|Lca
这题似乎和一道NOIP的题差不多,相似度直达98% 怪不得想出了思路…… Kruskal求最小生成树合并的时候添加一个带权的点权值为当前枚举的边的权值 把当前边上的两个点所在的并查集的根都连到新添的点上做他的儿子 然后询问的时候只需找出两个点的lca,lca的权值即为答案 Lca我写的树剖 hhhhhhh真是有自信#include<set>#include<map>#include<c原创 2016-01-20 10:31:35 · 611 阅读 · 0 评论 -
2164: 采矿|树链剖分|DP
DP比较显然,但是直接DP会Tle,这时需要树链剖分用线段树维护dp值同时维护链上的和子树的dp值#include<algorithm>#include<iostream>#include<complex>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<原创 2016-04-18 14:58:55 · 790 阅读 · 1 评论 -
BZOJ 3910: 火车|LCA|并查集
计算答案显然是一步一步的走然后求Lca用深度计算,关键就是怎么标记走过的路径 用并查集记录从这个点出发经过的最上端的城市,让后每次合并的时候从两个端点向lca合并,因为lca并查集记录的肯定是所有路径最上端的点#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<queue>#include<v原创 2016-02-26 18:50:30 · 628 阅读 · 0 评论 -
3631: [JLOI2014]松鼠的新家|树链剖分
题目大意:小熊每走到一个新的房间就需要吃一个糖,问每个房间至少有几个糖。 题目中说的很不明确的样子。。。。。。 枚举相邻的两个点,把这连接这两个点的链上的点的权值都+1,然后除了起点外其他的点都再-1 可以直接树剖线段树直接标记改,复杂度O(nlog22n)O(nlog_{2}^2n) 也可以直接差分一下最后在dfs一遍,复杂度O(nlog2n)O(nlog_{2}n) code1code原创 2016-03-08 19:45:11 · 474 阅读 · 0 评论 -
3083: 遥远的国度|树链剖分
这真是一道神题!! 显然需要离线来解决,再就是用到了差分的思想 以下是PoPoQQQ大爷复制gconeice的题解,说得非常详细,就不再赘述了 显然,暴力求解的复杂度是无法承受的。 考虑这样的一种暴力,我们把 z 到根上的点全部打标记,对于 l 到 r 之间的点,向上搜索到第一个有标记的点求出它的深度统计答案。观察到,深度其实就是上面有几个已标记了的点(包括自身)。所以,我们不妨把 z原创 2016-03-08 15:45:01 · 493 阅读 · 0 评论 -
BZOJ 4034: [HAOI2015]T2|线段树|树链剖分
写完裸的熟练剖分后,发现似乎不用树剖,只用dfs序就可以 然后就又写了一发,样例都过不了,发现是个错的………………………… 熟练剖分对于此题算是最裸的写法了单点修改,直接在线段树中暴力改这一个点就可以了子树修改,开一个数组记录子树大小,我们发现dfs标号的时候,以某个点为根的子树的所有点的标号都是连续的排在根之后的, 所以就相当于在线段树中区间修改[pos[x],pos[x]+size[x原创 2016-01-20 08:42:57 · 434 阅读 · 0 评论 -
1602: [Usaco2008 Oct]牧场行走|Lca
刷水~~~~~随便打了个树链剖分求lca#include#include#include#include#include#include#include#include#include#include#define T 2222#define lowbit(x) (x&(-x))using namespace std;int sc(){ int i=0;原创 2016-01-14 07:58:55 · 549 阅读 · 0 评论 -
BZOJ 4390: [Usaco2015 dec]Max Flow|树链剖分
lca+求个差分就ok啦感觉树链剖分求lca会快一点然后就没用倍增写完后交上就哇(wa)了一发然后发现连了单向边 我**第二遍交A个感觉异常舒畅然后发现跑了6s坐 稳了倒数rank1这酸爽………………#include#include#include#include#include#include#include#include#include#incl原创 2016-01-09 15:58:37 · 866 阅读 · 0 评论 -
BZOJ 1832: [AHOI2008]聚会|Lca
求出3个点两两的lca 有两个是相同的选另一个作为聚会地点 然后算距离 树剖求Lca似乎很快的样子#include<set>#include<map>#include<ctime>#include<queue>#include<cmath>#include<cstdio>#include<vector>#include<cstring>#include<cstdlib>#incl原创 2016-01-21 19:25:10 · 517 阅读 · 0 评论 -
3589: 动态树|树链剖分|线段树
直接树链剖分,然后查询一段路径的时候顺便在线段树中打上标记,如果再查到这个地方的时候就直接忽略掉这部分对答案的贡献#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<queue>#in原创 2016-04-18 15:16:48 · 849 阅读 · 0 评论