树链剖分和dfs序
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
树链剖分学习笔记
题目来源:luogu P3348【模板】树链剖分题目链接:https://www.luogu.org/problem/show?pid=3384题目大意:已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作:1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z,2 x y 表示求树从x到y结点最短路径上所有节点的值之和,3 x z 表示原创 2017-01-07 20:23:51 · 783 阅读 · 0 评论 -
[YNOI2017]bzoj 4811 由乃的OJ - 树剖 - 线段树
树剖,线段树维护每一位经过这个区间从左到右和从右到左0和1分别变成了啥,三个log稳T。发现其实只需要维护00000…000和1111…111会变成啥即可,这样就两个log了。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#inc原创 2018-08-03 08:06:50 · 271 阅读 · 0 评论 -
奇怪的树 - BIT - 树剖
题目大意:给一颗有根树,每个点是黑色或者白色,支持:翻转一个点的颜色,翻转所有与给定点距离为奇数的点的颜色,求所有黑点与给定点的lca的编号之和。2e5。 题解:首先考虑没有2咋做,类似与动态dp,先树剖一下,然后每个点维护轻边的所有信息,询问的时候有点像是LCT的切换轻重边。考虑如果是翻转整个树的颜色咋做,显然不仅维护黑点同时维护白点的答案,每次翻转整棵树就直接交换两个数组。因为还有距离为奇数...原创 2018-08-30 17:07:35 · 402 阅读 · 0 评论 -
bzoj 4712 洪水 - 动态dp - 树剖 - 线段树 - 矩阵乘法
动态dp入门题,转移有结合律可以写成矩阵的形式,特判叶子。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<climits>#define gc getchar()#define lint long long#de...原创 2018-08-21 12:37:29 · 317 阅读 · 0 评论 -
[学习笔记] Mys_C_K的独立集好题 - 动态dp - 树剖 - 线段树
注意修改的时候要先从上到下减去,然后修改好后从下到上加上。 注意轻边的信息是真的dp值,特判空信息。#include&lt;iostream&gt;#include&lt;cstring&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;#define lint int#define gc getch原创 2018-08-21 12:41:08 · 230 阅读 · 0 评论 -
动物园 - 树剖 - 主席树
给你一棵树,支持链加,和给定一条路径x-y,假设从y走到x的权值序列是{a},求 ∑iaii2−∑iaii2∑iaii2−∑iaii2\frac{\sum_{i}a_ii^2-\sum_{i}a_ii}2,还有返回到之前某个版本。 题解:直接树剖然后可持久化掉线段树即可,维护区间∑iikai,k≤2∑iikai,k≤2\sum_{i}i^ka_i,k\le2即可。#include<i...原创 2018-08-24 21:23:14 · 212 阅读 · 0 评论 -
NOIP2018 Day2 T3 保卫王国 - 动态dp - 树剖 - 线段树
直接裸上动态dp即可,因为某些不知道的原因NOIP能过,别的地方不开O2都过不了。upd:2018/11/27:现在luogu上不开O2也能过了,只要为每条重链单独开线段树就可以了(代码附后)。原创 2018-11-20 18:23:48 · 580 阅读 · 0 评论 -
物品购买 - dp - 树剖
题目大意:给你一棵树,每个点有一个物品,物品有体积和价值。可离线的多次询问,拿一条到根的链上做背包的结果。体积和价值以及询问的体积不超过32767,不超过5000个物品,5000次询问。内存20MB!!题解:考虑这么一件事情,离线后做dfs,会发现为了回溯要保留历史版本,但是一个点有多个子树的时候,最后一个子树遍历完了不需要回溯,因此就不需要保留历史版本了。按照轻重链划分后先遍历轻边的顺...原创 2018-11-21 19:28:47 · 134 阅读 · 0 评论 -
[学习笔记] Mys_C_K的独立集好题 - 动态dp - 树剖 - 全局平衡二叉树 - 学习笔记
题目大意:单点加,或者求以1为根时某个点的子树的最大独立集。题解:学习了“全局平衡二叉树”这个高级操作。之前两个log的做发,对每条重链单独开线段树,在luogu的动态dp那个题里跑得比一个log还快,并且通过了加强版。一个log的做发。还是类似于两个log的做法,先链分治(树剖),然后现在我们不用线段树维护每一条重链。我们对一条重链的每个点求其轻子树的size之和再+1,然后每次选择...原创 2018-11-27 09:11:25 · 646 阅读 · 0 评论