I.III.CF1009F Dominant Indices 大约一年前,我曾用线段树合并硬刚过了这题,现在是正解。 可以设 \(f_{i,j}\) 表示 \(i\) 子树中深度为 \(j\) 的点的数量。于是直接长剖优化即可。时间复杂度 \(O(n)\)。 虽然因为我极其垃圾的实现导致还没有线段树 ...
分类:
其他好文 时间:
2021-04-10 12:52:09
阅读次数:
0
线段树合并简单题,贪心神题! 题意简述:给定一棵树,每个点有权值$w_i$,要求你选择一个最大的点集(不要求联通),使得若$u是v的祖先$,则$w_u \leq w_v$. \(n \leq 1e5,w_i \leq 1e9\) 考虑设$dp_{u,i}$为以$u$为根的子树内,最大值为i能选的最大 ...
分类:
其他好文 时间:
2021-03-15 10:49:26
阅读次数:
0
先考虑怎样配对最优,发现对于一条边,若其两端的子树内需要配对的点的个数都为奇数,则该边会有 $1$ 的贡献,否则没有贡献,得这样为最优情况。 那么对于一棵子树,将其内部的点标记为 $1$,得到一个 $01$ 串,子树父边的贡献为 $01$ 串中长度为偶数且区间和为奇数的区间个数。 可以用线段树合并来 ...
分类:
其他好文 时间:
2020-10-31 01:40:56
阅读次数:
14
http://codeforces.com/problemset/problem/600/E 题意:给一个树,每个点有一个颜色,让你对于每个点,求以他为根的子树中,颜色是 出现数量最多的颜色 的节点,的编号和(如果有多个出现数量最多的颜色,都算),\(n\le 10^5\) 线段树合并 用到线段树合 ...
分类:
其他好文 时间:
2020-10-19 22:36:15
阅读次数:
20
题目链接 Solution 对每个节点维护一个权值线段树,线段树上就维护最大值以及最大值出现的节点。利用树上查分的思想,在 \(x\),\(y\) 位置 \(+1\),在 \(LCA(x, y)\) 位置 \(-1\),\(fa_{LCA(x, y)}\) 位置 \(-1\)。 更新完后不断把线段树 ...
分类:
其他好文 时间:
2020-10-06 20:09:52
阅读次数:
28
线段树合并 前置芝士 动态开点线段树和权值线段树 乍一看,线段树合并和上面那两个奇怪的东西有什么关系。 其实,线段树合并的全称为动态开点权值线段树合并( 雾 如果对上面那两个奇怪的东西不理解可点开链接进行搜索(大雾 优点 ? 动态开点线段树有着一些优点,比如说当你让某个节点继承另一个节点的左儿子或者 ...
分类:
其他好文 时间:
2020-07-19 16:32:06
阅读次数:
90
(鸽 王 归 来) #算法简介 线段树合并可以将2个权值线段树合并为一个。 #实现 很简单,我们的操作如下: 2棵线段树都有的节点,把它们的值合并。 只有一颗线段树有节点,那么合并出来的线段树节点的值就是这个节点的值。 依次递归下去搞定一切。 一般来说,如果不需要用合并前的线段树信息,我们就可以卡一 ...
分类:
其他好文 时间:
2020-07-08 20:06:13
阅读次数:
47
雨天的尾巴 这道题应该算是很板子了,不过需要稍微思考一下,对于每次发放,如果模拟发放过程,那么每次发放的时间复杂度是$O(n)$的,这样显然会T,考虑如果每次只发放一种,用树上差分解决就可以,但是这个有很多种,所以给每个结点开一棵权值线段树就行,每个节点记录每种救济粮的数量,然后同样是利用差分的思想 ...
分类:
其他好文 时间:
2020-07-05 15:42:13
阅读次数:
51
一些有意思,但是没地方提交的题。 1 每个点有一个颜色,求树上所有颜色不同点对的距离和。 做法一 不同点对的距离和 \(=\) 总距离和 \(-\) 相同颜色的点对距离和。 对每个颜色建立虚树,然后算就得了。 做法二 首先同样进行第一步转化。 考虑使用线段树合并维护一个子树中每种颜色有多少个,深度之 ...
分类:
其他好文 时间:
2020-07-03 23:28:35
阅读次数:
82
0.1 诶嘿,好像鸽了太久了,博客的访问速度都明显变慢了ヽ(゜▽゜ )-C<(/;◇;)/~ 1.1 线段树合并 当你有两个数组时,并且希望快速合并两个数组时,最朴实的想法莫过于:枚举、合并,吧。 for(int i=1;i<=n;++i) a[i]+=b[i]; 复杂度显然是$O(n)$的。那么对 ...
分类:
其他好文 时间:
2020-06-29 23:10:36
阅读次数:
88