1 /** 2 problem: http://poj.org/problem?id=2763 3 **/ 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 10 const int MAXN = 100005;... ...
interlinkage: https://jzoj.net/senior/#main/show/3175 description: 给定一棵N 个节点的树,标号从1~N。每个点有一个权值。要求维护两种操作:1. C i x(0<=x<2^31) 表示将i 点权值变为x2. Q i j x(0<=x ...
分类:
其他好文 时间:
2019-04-09 16:37:30
阅读次数:
134
题意:给你一颗树,每个节点有有一个权值,每次询问从x到y的最短路上权值在c到d之间的所有的点的权值和是多少。 思路:肯定要用树剖,因为询问c到d之间这种操作树上倍增很难做,但是用其它数据结构可以比较好的查询。我们可以用线段树来进行这种操作。每次询问一个区间时,如果当前区间被查询区间完全覆盖,并且区间 ...
分类:
其他好文 时间:
2019-04-03 22:05:36
阅读次数:
173
"题目链接" 题意分析 带修改树链第$k$大 首先我们使用树链剖分将树上问题转化为区间问题 然后对于当前修改 我们直接修改即可 对于链上第$k$大 我们先求一个总点数 转化为链上第$k$小 然后我们将$x$到$y$之间所有的重链都提出来 那么在$dfs$序上就是一堆连续区间 而且最多$log$个 类 ...
分类:
其他好文 时间:
2019-04-03 19:25:40
阅读次数:
168
P2590 [ZJOI2008]树的统计 虽然是入门树剖模板 但是我终于1A了(大哭) 懒得写啥了(逃 ...
分类:
其他好文 时间:
2019-03-19 21:42:09
阅读次数:
127
树链剖分,顾名思义就是将树形的结构剖分成链,我们以此便于在链上操作 首先我们需要明白在树链剖分中的一些概念 重儿子:某节点所有儿子中子树最多的儿子 重链:有重儿子构成的链 dfs序:按重儿子优先遍历时的顺序 轻儿子的意思就与重儿子相反 首先是第一个dfs操作 在本次操作中,我们主要做的是处理所有节点 ...
分类:
其他好文 时间:
2019-03-16 09:31:22
阅读次数:
155
题目链接: "戳我" 可持久化01trie+树链剖分 其实序列上的大家应该都会做,这个题还不过是把序列上的放到了树上而已。多来一个树剖就可以解决。 dummyummy说可以不用树剖写。。可是我还是不怎么会。。。等他写完了我再放那种解法的吧。。。 代码如下: cpp include include i ...
分类:
其他好文 时间:
2019-03-07 00:50:57
阅读次数:
148
"传送门" 和学长刚,说自己能不写返回值为struct的query并且不写单点查询而AC此题,挣扎了半个小时还是改回去了 直接树链剖分,对于每个节点记一下最左边的和最右边的颜色以及区间内的颜色段数,区间合并一下就好了 对于查询的时候,也合并一下,跳链的时候注意看一下两条链相邻的颜色,判断一下 这个题 ...
分类:
其他好文 时间:
2019-03-02 17:15:50
阅读次数:
202
※背景 1xxx年,一个月黑风高的夜晚,一位信息学界知名大佬正在修炼。忽然,他浑身金光大盛,搅动风云,天地失色。在那一片璀璨的金光中,有一算法应运而生。众大佬从四面八方看向这里,无不面色凝重。只听轰隆一声,宛若晴天霹雳,灵气翻腾,金光一闪,那神秘的算法不知所踪…… 一、简介 以上就是树链剖分的诞生 ...
分类:
其他好文 时间:
2019-02-19 20:02:17
阅读次数:
257
【题面】 有一棵n个点的树,边按照1~n 1标号,每条边拥有一个边权 现在有 m 次操作,每次操作为如下三种之一: . 1 x y:边x的权值改为y . 2 x y:将点x到点y路径上的所有边权值变成相反数 . 3 x y:查询点x到点y路径上的最大边权 第一行为两个整数n,m,表示序列长度和操作次 ...
分类:
其他好文 时间:
2019-02-16 20:50:23
阅读次数:
170