线段树合并
文章平均质量分 62
SC.ldxcaicai
我很菜=_=
展开
-
2018.07.07 BZOJ2212: Poi2011Tree Rotations(线段树合并)
2212: [Poi2011]Tree Rotations Time Limit: 20 Sec Memory Limit: 259 MB Description Byteasar the gardener is growing a rare tree called Rotatus Informatikus. It has some interesting features: The tr...原创 2018-07-07 22:39:37 · 423 阅读 · 0 评论 -
bzoj4399: 魔法少女LJJ(线段树合并)
传送门线段树合并菜题(然而findfindfind函数写错位置调了好久)支持的操作题目写的很清楚了,然后有一个神奇的限制c≤7c\le7c≤7要注意到不然会去想毒瘤线段树的做法。思路:这题只有一个新奇的操作就是比较两个连通块的所有点权的乘积的大小。这个东西可以对所有点权取对数之后转化为比较加和的大小。剩下的都可以用并查集+线段树合并秒掉。注意题目卡空间代码:#include&l...原创 2019-01-16 19:15:07 · 353 阅读 · 0 评论 -
线段树(合并/分治)&&重/长链剖分&&主席树专题(持续更新中)
常规线段树(简单)模板 树剖区间取负,单点修改维护最大最小总和 单点修改维护根节点乘积 维护区间连续(0/1)(0/1)(0/1)的长度 根据逆序对数还原排列 双指针+线段树永久化标记 505050多棵线段树动态开点 线段树(树状数组)求逆序对 单点插入区间查询 区间开根区间求和 单点修改区间最大连续和线段树与算法(简单)优化dpdpdp 线段树合并 李超线...原创 2018-07-28 16:01:09 · 3199 阅读 · 9 评论 -
bzoj4530: [Bjoi2014]大融合(线段树合并)
传送门线段树合并菜题。题意简述:nnn个点,支持连边以及查询一个点所在连通块中经过这个点的路径条数,保证这张图时刻为森林。思路:先建出所有操作完之后的树统计出dfsdfsdfs序 注意有可能是森林而不是树然后用线段树合并维护每棵子树的sizesizesize即可。为了方便,我们将每个节点的ininin作为下标插入线段树中,这样可以方便的统计出一棵子树在[inv,outv],v∈sub...原创 2019-01-14 18:37:35 · 297 阅读 · 1 评论 -
bzoj5457: 城市(线段树合并)
传送门线段树合并菜题。题意简述:给一棵树,每个节点有bib_ibi个aia_iai民族的人,问对于每棵子树,子树中哪个民族的人最多,有多少人。思路:直接上线段树合并,边合并边维护答案即可。为了代码方便可以用pairpairpair来维护答案。代码:#include<bits/stdc++.h>#define ri register int#define lc (...原创 2019-01-19 15:54:52 · 393 阅读 · 0 评论 -
codeforces 893F.Subtree Minimum Query(线段树合并)
传送门线段树合并菜题。题意简述:给一棵带点权的有根树,多次询问某个点ppp子树内距离ppp不超过kkk的点的点权最小值,强制在线。思路:当然可以用dfsdfsdfs序+主席树水过去。然而线段树合并也是一个不错&&好写的思路我们按照深度为下标建立权值线段树然后线段树合并预处理一波。查询就转化成区间查询了。注意因为要保存下每一个子树的信息所以合并的时候要新建节点来储存...原创 2019-01-19 15:19:37 · 266 阅读 · 0 评论 -
2018.10.26 NOIP模拟 图(最小生成树+线段树合并)
传送门首先最开始说的那个一条路径的权值就是想告诉你两个点之间的贡献就是瓶颈边的权值。那么肯定要用最小生成树算法。于是我考场上想了30min+30min+30min+的树形dpdpdp发现转移是优秀的nlognnlog_nnlogn,总时间复杂度O(n2logn)O(n^2log_n)O(n2logn)妙啊然后有了弃疗的想法。突然想到没有利用kruskalkruskalkruskal...原创 2018-10-26 16:13:32 · 333 阅读 · 3 评论 -
2018.08.28 洛谷P4556 [Vani有约会]雨天的尾巴(树上差分+线段树合并)
传送门 要求维护每个点上出现次数最多的颜色。对于每次修改,我们用树上差分的思想,然后线段树合并统计答案就行了。注意颜色很大需要离散化。代码:#include<bits/stdc++.h>#define N 100005#define Max 100000using namespace std;inline int read(){ int ans=0;...原创 2018-08-28 22:18:06 · 399 阅读 · 0 评论 -
2018.08.27 [Usaco2017 Jan]Promotion Counting(线段树合并)
描述The cows have once again tried to form a startup company, failing to remember from past experience t hat cows make terrible managers!The cows, conveniently numbered 1…N1…N (1≤N≤100,000), organize ...原创 2018-08-27 23:26:02 · 279 阅读 · 0 评论 -
2018.08.11 洛谷P3224 [HNOI2012]永无乡(线段树合并)
传送门 给出n个带点权的点,支持连边和查询连通块第k大。这个貌似就是一道线段树合并的裸板啊。。。 代码:#include&lt;bits/stdc++.h&gt;#define N 100005using namespace std;inline int read(){ int ans=0; char ch=getchar(); while(!isdi...原创 2018-08-11 21:26:22 · 243 阅读 · 0 评论 -
bzoj4556: [Tjoi2016&Heoi2016]字符串(二分答案+sam+线段树合并)
传送门题意:给一个字符串SSS。有mmm次询问,每次给四个参数a,b,c,da,b,c,da,b,c,d,问s[a...b]s[a...b]s[a...b]的所有子串和s[x...y]s[x...y]s[x...y]的最长公共前缀是多少。思路:先翻转字符串转化为求最长公共后缀。设现在求s[a...b]s[a...b]s[a...b]的所有子串和s[x...y]s[x...y]s[x......原创 2019-02-27 21:08:49 · 189 阅读 · 0 评论