
数据结构
Junwinds
中国科学院大学
展开
-
从 线段树维护区间最大子段和 浅谈 DDP 【程序设计竞赛】
题意:n≤1e5,m≤1e5n\le 1e5,m\le 1e5n≤1e5,m≤1e5,每次支持单点修改,求区间内的最大子段和(不能为空)引言相信用线段树维护左边最大,右边最大的分治做法大家都会,我们来思考一下DDP怎么做这个题。先列出dp方程,f[i][1]表示从1选到i,i必须选的产生的最大子段和,f[i][0]:i可以不选。f[i][1]表示从1选到i,i必须选的产生的最大子段和,f[...原创 2019-11-15 20:43:00 · 404 阅读 · 0 评论 -
[PKUWC 2018]Minimax 【线段树合并优化dp】
LOJ2537SOLdp式子:f[U][rank−j−inU]=f[V][rank−k−inV]∗(P∗∑i=1k−1f[V][i]+(1−P)∗∑i=k+1totVf[V][i])f[U][rank-j-inU]=f[V][rank-k-inV]*(P*\sum_{i=1}^{k-1} f[V][i]+(1-P)*\sum_{i=k+1}^{tot_V}f[V][i])f[U][rank...原创 2019-11-04 20:52:24 · 448 阅读 · 1 评论 -
[ZJOI2019]语言 【线段树合并】
LOJ3046SOL转换一下题意,对于每一个点我们维护可以到达的集合SSS,ans=∑∣Si∣ans=\sum{|S_i|}ans=∑∣Si∣。然后每次区间覆盖相当于向一条链上的每个点的集合,集体覆盖上一些点。有一个比较暴力的做法。对于每一个点,我们用一颗动态开点的线段树维护可以到达的点集,当前点的贡献就线段树的总长。对于每次操作,覆盖的点在一条链上,所以用树剖变成lognlogn...原创 2019-11-01 07:57:50 · 153 阅读 · 0 评论 -
NOIP2017 列队【动态开点线段树/平衡树】
洛谷P3960SOL据说正解离线+树状数组一眼思路就是模拟题目的过程。我们发现每次出队为:第xxx行向左挪,最后一列向前挪。所以开n+1n+1n+1个平衡树维护队列就好了。nnn个记录xxx行1−m−11-m-11−m−1列的信息,剩下一个记录最后一列的信息。每次修改取出P(x,y)P(x,y)P(x,y),取出P(x,m)P(x,m)P(x,m),把P(x,m)P(x,m)P(...原创 2019-10-27 21:41:05 · 276 阅读 · 0 评论 -
P4426 [HNOI2018] 毒瘤 【虚树+dp / DDP】
P4426SOL敲了3小时虚树,突然发现这是一道ddp板题。。。看来最近和板子挺有缘的。。transfer the probelem:\text{transfer\ the\ probelem}:transfer the probelem:在有10条多余边的树上求点独立集个数。基于原树思考。先求出n−1n-1n−1条边的fff值。剩下的边最...原创 2019-10-24 22:14:56 · 196 阅读 · 0 评论 -
LOJ2564 SDOI2018 原题识别【主席树+随机化分析】
loj2564SOL有两个操作,1.树上区间数颜色 2.树上n2n^2n2版的操作1。- 先放在序列上。操作1:对于每一种颜色,只在其在区间的第一次出现位置统计。我们求出每一个位置对应的颜色的前一次出现位置(记为preprepre)(第一次就是000),放在主席树中即可。操作2,计算每一个点被多少区间访问到。-对于 (A,B](A,B](A,B]之间的点ppp,首先 pre...原创 2019-10-16 07:49:27 · 170 阅读 · 0 评论 -
BZOJ3674 可持久化并查集【主席树+并查集】
BZOJSOL可持久化并查集?难道可持久化非旋treap维护并查集森林?其实没那么麻烦。。可以看做是主席树的应用。从代码的角度思考并查集,我们只需要可持久化 fafafa数组即可。这里不进行路径压缩(版本太多,感觉压缩了实测效果也不是那么理想)所以要按秩合并,再用主席树维护一个depdepdep数组即可。CODE/*********************************...原创 2019-10-14 19:32:12 · 155 阅读 · 0 评论 -
BZOJ2989 数列【cdq分治】
darkbzojSOL据说可以对修改二进制分组+主席树在线做? 学学吧。。。先把曼达顿距离转化成切尔雪夫距离,即:∣x1−x2∣+∣y1−y2∣≤k|x_1-x_2|+|y_1-y_2|\le k∣x1−x2∣+∣y1−y2∣≤k 转化为 max(∣x1′−x2′∣,∣y1′−y2′∣)≤kmax(|x_1'-x_2'|,|y_1'-y_2'|)\le kmax(∣x...原创 2019-10-14 18:24:05 · 256 阅读 · 0 评论 -
BZOJ2653 middle 【主席树+二分】
BZOJSOL无法确定中位数 ? 我们可以考虑转化思路。二分一个中位数,再判断是否合理。根据本题中中位数的定义,只需要小于 它的 数的个数≤∣len2∣\le |{len \over2}|≤∣2len∣。我们可以将大于iii的数赋值成111,小于的赋值成−1-1−1。若maxLsum[a,b−1]+sum[b,c]+maxRsum[c+1,d]≥0若maxLsum[a,b-1]+s...原创 2019-10-14 16:49:52 · 129 阅读 · 0 评论 -
BZOJ3339 Rmq Problem【离线/可持久化数据结构】
DarkbzojSOL法一:维护每一个值在原序列的最右出现位置的最小值,对于二分的左半部分,如果最小值大于等于当前左端点,说明已满。用主席树排除右端点超出qr的影响。在主席树上二分法二:增量法思想。 从[l,r] 到[l+1,r],只有a[l]可能能够拿来更新一段区间的mex,写一个以左端点为第一维的支持区间修改min,单点查询(可持久化标记)的主席树。(也可以离线,用线段树做)...原创 2019-10-14 16:28:52 · 169 阅读 · 0 评论 -
P3703 [SDOI2017] 树点涂色 【LCT+dfs序+线段树】
题面SOL维护颜色集合? 树上莫队?好像做不了3操作,只有30分。。。仔细思考op1op1op1,若进行链修改,相当于把xxx到根路径拼成了一段,一开始点iii到根的权值为dep[i]dep[i]dep[i],相当于每一个点都是独立的一段。那么点到根的权值就是该路径上的 “总段数”。但是我们还是不能快速处理op1op1op1。思考LCTLCTLCT的accessaccessaccess,...原创 2019-10-04 21:04:03 · 168 阅读 · 1 评论 -
P2056 [ZJOI2007] 捉迷藏 【动态点分治】
题面SOL树的直径? 如果有 ∣S∣≤1e6|S|\le1e6∣S∣≤1e6 之类的,说不定可以虚树做。然鹅并没有。另一种O(nlogn)O(nlogn)O(nlogn)讨论完树中所有路径的做法当然是点分治了。只是此题需要支持修改,于是记录一下点分治时候的fafafa,每个分治重心维护一个数据结构,我们便有了一个O(nlogn+mlog2n)O(nlogn+mlog^2n)O(nlogn...原创 2019-09-29 14:53:30 · 183 阅读 · 0 评论 -
#2134 染色 【树链剖分】
描述给定一棵有n个节点的无根树和m个操作,操作有2类:1、将节点a到节点b路径上所有点都染成颜色c;2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。请你写一个程序依次完成这m个操作。输入第一行包含2个整数n和m,分别表示节点数和操作数;第二行包含n个正整数表示n个节点的初始颜色下面n-1行每行包含两...原创 2019-02-14 17:51:34 · 261 阅读 · 0 评论 -
#3637 Rollcall 【离线+权值线段树】
描述初始有一个空集,依次插入N个数Ai。有M次询问Bj,表示询问第Bj个数加入集合后的排名为j的数是多少输入第一行是两个整数N,M接下来一行有N个整数,Ai接下来一行有M个整数Bj,保证数据合法输出M行,回答每个询问样例输入 [复制]7 49 7 2 8 14 1 81 2 6 6样例输出 [复制]9978【说明】第一次询问,当前几何{9},1th=9第二次询...原创 2019-02-15 14:59:13 · 239 阅读 · 0 评论 -
#2212 幼儿园 【线段树入门】
描述/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////幼儿园里的小朋友们正在和老师玩一个有趣的游戏。小朋友们被分成了 N 小组,初始时第i小组的人数为 ai 。老师先选定一些编号在[l,r]内的小组,然后...原创 2019-02-09 22:33:14 · 138 阅读 · 0 评论 -
【2018提高测试】飘雪圣域 【连通性+可持久化线段树 / 离线+权值线段树】 (详解)
描述 IcePrincess_1968 和 IcePrince_1968 长大了,他们开始协助国王 IceKing_1968 管理国内事物。 IcePrincess_1968 和 IcePrince_1968 住在一个宁静悠远的王国:IceKingdom —— 飘雪圣域。飘雪圣域有 n 个城镇,编号 1,2,3…n有些城镇之间有道路,且满足任意两点之间有且仅有一条路径。飘雪圣域风景优美,但...原创 2019-02-18 21:27:18 · 247 阅读 · 0 评论 -
# 2445 普通平衡树 【非旋treap】
描述您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入x数删除x数(若有多个相同的数,因只删除一个)查询x数的排名(若有多个相同的数,因输出最小的排名)查询排名为x的数求x的前驱(前驱定义为小于x,且最大的数)求x的后继(后继定义为大于x,且最小的数)输入第一行为n,表示操作的个数,下面n行每行有两个数opt和x,opt表示操作的序号(1<=o...原创 2019-03-01 20:29:04 · 111 阅读 · 0 评论 -
长链剖分 总结 【知识点】
概念:长链剖分类似于重链剖分,只是选择链的标准:不是 子树节点最多的儿子,而是 到叶节点的路径最大的子节点(所以说是长链)顶点:一条长链上深度最小的点性质:对于一个有n个节点的树,每一个子节点的最长链长度不长于他的祖先节点 (显然。。)所有长链长度之和等于 n(总结点数)证明:一个点也算一条长链,每一个点在且只在一条长链上从根节点走到任何一个节点,最多 n\s...原创 2019-03-16 14:24:37 · 558 阅读 · 0 评论 -
BZOJ3531 SDOI2014旅行 【离线+树链剖分】
传送门分析:首先不难发现此题是一个树上修改。树剖是一定的。但是,询问的是一条路上同一颜色的权值和,颜色最多有1e5种,如果每一种颜色都维护一棵线段树显然要爆空间。此时我们可以想到离线。先处理一种颜色的修改和询问,统计好答案清空后再处理下一种颜色。(思路类似 SDOI2008郁闷的小J)注意一点,这里是单点修改。如果是区间修改最坏会被卡成 n2n^2n2。。。代码细节:一,结构体...原创 2019-03-22 22:14:29 · 262 阅读 · 3 评论 -
BZOJ2631 tree【LCT】
传送门PROBLEM一棵n个点的树,每个点的初始权值为1。对于这棵树有q个操作,每个操作为以下四种操作之一:u v c:将u到v的路径上的点的权值都加上自然数c;− u1 v1 u2 v2:将树中原有的边(u1,v1)删除,加入一条新边(u2,v2),保证操作完之后仍然是一棵树;∗ u v c:将u到v的路径上的点的权值都乘上自然数c;/ u v:询问u到v的路径上的点的权值和,...原创 2019-04-23 15:58:19 · 150 阅读 · 0 评论 -
HDU5283 SENOIR'S FISH【线段树】
介于本校oj,题面如下:SOL//一开始看错了题面,以为“网”是动态的,头脑一片空白既然渔网不动,又是以鱼的编号为下标询问,显然不能基于鱼的坐标解决问题考虑暴力处理每一个修改,对于鱼的x坐标,只加不减(y坐标同理)。换而言之,如果鱼已出网,便可不用考虑。一、将 X1,Y1,X2,Y2X1,Y1,X2,Y2X1,Y1,X2,Y2看作四条分界线,用四个线段树分别维护原序列上某一段区间...原创 2019-07-31 16:17:25 · 213 阅读 · 0 评论 -
# 【SDOI2008】 郁闷的小J woj1717
题面:给一个n长的数列,m次询问; 单点更改 或 询问区间中 某数出现次数;此题涉及区间维护,显然数据结构。线段树或树状数组;由于满足区间加减,直接上树状数组;问题在如何维护某数出现次数。。。根据数据范围,数值的范围在 maxlongint 中 ,如果使用常规的方法:每一个数维护一个树状数组,显然爆炸。所以不难想到,无法直接在线回答;思路转为离线;首先我们要压缩空间: 我们思...原创 2018-12-15 20:10:50 · 186 阅读 · 0 评论