线段树
Hany01
这个作者很懒,什么都没留下…
展开
-
【CF558E】A Simple Task(线段树)
Description给定一个长度为nn的小写字母序列,有mm个操作,每次将第lil_i个字母到第rir_i个字母排成升序或倒序,求最后得到的序列。Solution法一由于只有26种元素,考虑用线段树维护每个节点所包含的每个字母的个数以及该区间内是降序还是升序或者乱序,直接维护即可法二考虑用set维护,一开始每一个字母都是一个独立的集合,每次操作将两端的集合暴力拆开,将中间的字母集合合并时间复杂度O原创 2017-10-06 20:39:35 · 521 阅读 · 0 评论 -
【BZOJ3730】【点分树模板题】震波
Description在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i]。 不幸的是,这片土地常常发生地震,并且随着时代的发展,城市的价值也往往会发生变动。 接下来你需要在线处理M次操作: 0 x k 表示发生了一次地震,震中城市为x,影响范围为k,所有与x距离不超过k的城市都将受到影响,该次地震造成的经济...原创 2018-07-09 12:39:34 · 255 阅读 · 0 评论 -
【LOJ6041】【雅礼集训 2017 Day7】事情的相似度(LCT,SAM,线段树,离线)
Description人的一生不仅要靠自我奋斗,还要考虑到历史的行程。历史的行程可以抽象成一个 01 串,作为一个年纪比较大的人,你希望从历史的行程中获得一些姿势。你发现在历史的不同时刻,不断的有相同的事情发生。比如,有两个人同时在世纪之交 11 年的时候上台,同样喜欢与洋人谈笑风生,同样提出了以「三」字开头的理论。你发现,一件事情可以看成是这个 01 串的一个前缀,这个前缀最右边...原创 2018-06-27 20:32:46 · 579 阅读 · 0 评论 -
【BZOJ1135】【POI2009】Lyz(Hall定理,线段树)
Description初始时滑冰俱乐部有1到n号的溜冰鞋各k双。已知x号脚的人可以穿x到x+d的溜冰鞋。 有m次操作,每次包含两个数ri,xi代表来了xi个ri号脚的人。xi为负,则代表走了这么多人。 对于每次操作,输出溜冰鞋是否足够。Solution根据Hall定理,溜冰鞋足够当且近当:对于人的每个子集S′S′S',他们可以穿的对应的溜冰鞋的集合Γ(S′)Γ(S′)\Gamm...原创 2018-07-25 14:18:29 · 275 阅读 · 0 评论 -
【CF 817F】MEX Queries(线段树)
Description维护一个长度1018101810^{18}的010101序列,要求兹瓷区间赋值、区间取反、查询第一个000的位置。Solution离散化后用线段树维护一个取反标记、一个赋值标记即可。Code/************************************************ * Au: Hany01 * Date: Aug...原创 2018-08-03 16:32:41 · 301 阅读 · 0 评论 -
【BZOJ4653】【UOJ222】【LOJ2086】【NOI2016】区间(线段树)
Descriptionhttp://uoj.ac/problem/222Solution线段树水题。将线段按长度排序,由于花费等于最长线段减最短线段,我们可以只考虑选取一段连续区间内的线段。 我们对于每一个左端点,找到一个最靠左的右端点计算贡献。而右端点的位置是单调的,我们可以做到O(n)O(n)O(n)枚举,加上线段树,时间复杂度O(nlogn)O(nlogn)O(n...原创 2018-07-31 21:18:20 · 175 阅读 · 0 评论 -
【BZOJ3211】花神游历各国(线段树)
DescriptionSolution线段树维护,由于有效开根最多loglog\log次,直接暴力开根即可。Code/************************************** * Au: Hany01 * Prob: [BZOJ3211] 花神游历各国 * Date: Jul 31st, 2018 * Email: hany01@fo...原创 2018-07-31 21:39:56 · 366 阅读 · 0 评论 -
【UOJ228】基础数据结构练习题(线段树)
Description给定序列,要求资瓷区间加、区间开根、区间求和。Solution用线段树维护最大值、最小值、和。如果max−max−−−−√=min−min−−−√max−max=min−min\max - \sqrt{\max}=\min - \sqrt{\min},那么一起处理、打上区间减标记即可。时间复杂度??我太菜了,不知道。。。Code/*...原创 2018-07-31 22:26:25 · 324 阅读 · 0 评论 -
【BZOJ4491】我也不知道题目名字是什么(线段树)
Description给定一个序列A[i],每次询问l,r,求[l,r]内最长子串,使得该子串为不上升子串或不下降子串。Solution线段树维护左边、中间、右边的最长不升/降子串,pushup时维护一下即可。Code/************************************************ * Au: Hany01 * Prob...原创 2018-08-01 22:26:06 · 206 阅读 · 0 评论 -
【CF 833B】The Bakery(DP,线段树)
Description将一个长度为n的序列分为k段使得总价值最大一段区间的价值表示为区间内不同数字的个数Solution容易得到一个简单的DP,dpi,jdpi,jdp_{i,j}表示到了第iii位、用了jjj段的最大价值,那么有dpi,j=max(dpk,j−1+value(k+1,i))dpi,j=max(dpk,j−1+value(k+1,i))dp_{i,j}=\m...原创 2018-08-02 20:54:10 · 281 阅读 · 0 评论 -
【CF446C】DZY Loves Fibonacci Numbers(线段树)
Description给定一个序列,资瓷区间加上一个斐波那契数列,区间求和。Solution有一个性质:fib[a+b]=fib[a−1]×fib[b]+fib[a]×fib[b+1]fib[a+b]=fib[a−1]×fib[b]+fib[a]×fib[b+1]fib[a+b]=fib[a-1]\times fib[b]+fib[a]\times fib[b+1]对于每次...原创 2018-08-24 16:42:10 · 201 阅读 · 0 评论 -
【ARC069F】Flags(二分,2-SAT,线段树优化建边)
Description有nnn面flag,每个flag可以立在两个地方,求出一种方案使得flag之间的最小距离最大。Solution首先二分这个距离,然后用2-SAT检查方案是否可行。 这样最坏情况建出来的边是n2n2n^2的,用线段树优化建边即可。Code/************************************************ *...原创 2018-08-31 23:44:13 · 237 阅读 · 0 评论 -
【BZOJ3626】【LNOI2014】LCA(树链剖分,线段树)
Description给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。 有q次询问,每次询问给出l r z,求sigma_{l<=i<=r}dep[LCA(i,z)]。 (即,求在[l,r]区间内的每个节点i与z的最近公共祖先的深度之和)S...原创 2018-09-28 23:46:28 · 220 阅读 · 0 评论 -
【BZOJ2243】【SDOI2011】染色(树剖,线段树)
Description给定一棵有n个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段), 如“112221”由3段组成:“11”、“222”和“1”。 请你写一个程序依次完成这m个操作。Solution树链剖分傻逼题。线段树搞一搞,每个区间维护一个最左边、最右边...原创 2018-09-28 23:46:18 · 151 阅读 · 0 评论 -
【BZOJ5405】platform(二分,SA,线段树)
Descriptionhttps://www.luogu.org/problemnew/show/P4143Solution先求出后缀数组,考虑一个后缀的每一个前缀,发现名次递减、权值增加,那么它们的图像一定只有一个交点,这个是可以二分的。现在的问题是如何得到一个子串的名次。首先可以通过∑n−heighti−sai∑n−heighti−sai\sum n-height_i-...原创 2018-06-24 15:24:47 · 415 阅读 · 0 评论 -
【BZOJ1396】【BZOJ2865】识别子串(SAM,线段树)
DescriptionSolution识别子串显然就是后缀自动机上右端点集合大小为1的点而且右端点的位置等于maxlen。 我们对于每一个sz[u]=1的点,有两个更新的方向: 1. 1~len[u]-len[fa[u]] 更新成 len[u] - i + 1 2. len[u]-len[fa[u]]~len[u] 更新成 len[fa[u]] + 1 第二种直接用一棵...原创 2018-06-09 22:12:37 · 455 阅读 · 0 评论 -
【CF438D】 The Child and Sequence(线段树取模)
Description给定一个长度为n的序列,支持区间取模、单点更新、区间求和三个操作Solution单点更新,区间求和显然可以用线段树直接肝,关键在于区间取模。 考虑线段树中除了存该区间的和,同时维护该区间的最大值,当模数大于最大值时,就不需要模了,否则进行单点取模。 注意,这里虽然是单点取模,但是不会TLE,因为对于每次取模操作,如果模数小于该数,则取模有效,该数最大只会变成(n+1)/2−原创 2017-10-01 21:16:54 · 538 阅读 · 0 评论 -
51nod 1302 矩形面积交 (不要把题目玩工业了。。)
Description有2N个矩形,这些矩形被标号为0 ~ 2N-1,对于第i个矩形其长宽分别为X[i]与Y[i]。现在要把这2N个矩形分为两组,每组N个,每个矩形恰好分到两组中的一组里。分成两组后,设两组分别为A组、B组,对于每一组矩形,你需要分别完成如下任务:将该组中的N个矩形依次放在一个平面上,可以相互重叠,要求每个矩形的4条边都平行于平面坐标系的X轴或Y轴,矩形在摆放时可以旋转90度后再摆放原创 2017-11-07 20:45:15 · 542 阅读 · 0 评论 -
NOIP2012 借教室 (线段树)
DescriptionSolution考虑用线段树维护,每借一段时间的教师便在线段树中减去对应的值,不理解为什么网上这么多二分的。。Code//Author: Hany01//Date: Nov 5th. 2017#include<bits/stdc++.h>#define For(i , j , k) for (int i = (j) , i##_end_ = (k) ; i <= i##_原创 2017-11-05 21:52:35 · 336 阅读 · 0 评论 -
NOIP 2017 列队 (线段树动态开点)
Description既然众所周知我就不多说了Solution考虑对于每一行的前(m−1)(m - 1)个点建一棵线段树,最后一列单独建一棵线段树,每次操作在线段树中修改后把接在后面的人的编号丢到一个vector 里就行了。至于空间,动态开点即可。Code//Au: Hany01#include<bits/stdc++.h>using namespace std;typedef long long原创 2017-11-23 21:57:10 · 1839 阅读 · 0 评论 -
【BZOJ4826】【HNOI2017】影魔(线段树)
Descriptionclick meSolution参考了dyx的博客 %%% 用单调栈的方式处理出每个位置左右第一个比他大的数的位置 对于每对lef[i]和rig[i]都会做出p1的贡献 每个lef[i]会对i+1到rig[i]−1做出p2贡献 同理,每个rig[i]都会给lef[i]+1到i−1做出p2贡献Source/*********...原创 2018-03-04 15:18:19 · 209 阅读 · 0 评论 -
【BZOJ2212】【POI2011】Tree Rotations(线段树合并)
Descriptionclick meSolution对于每个节点有一棵权值线段树,向上递归时合并同时计算逆序对即可。Source/************************************************ * Au: Hany01 * Date: Mar 22nd, 2018 * Prob: [BZOJ2122][POI2011] Tree...原创 2018-03-22 21:22:28 · 232 阅读 · 0 评论 -
【BZOJ4552】【TJOI2016&HEOI2016】排序(线段树、二分)
Description在2016年,佳媛姐姐喜欢上了数字序列。 因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他。 这个难题是这样子的: 给出一个1到n的全排列,现在对这个全排列序列进行m次局部排序,排序分为两种:1:(0,l,r)表示将区间[l,r]的数字升序排序2:(1,l,r)表示将区间[l,r]的数字降序排序最后询问第q位置上的数字。Solut...原创 2018-03-26 21:14:13 · 172 阅读 · 0 评论 -
【BZOJ5249】【九省联考2018】IIIDX(线段树)
Description他需要给正在制作中的游戏《IIIDX》安排曲目的解锁顺序。游戏内共有n首曲目,每首曲目都会有一个难度d,游戏内第i首曲目会在玩家Pass第trunc(i/k)首曲目后解锁(x为下取整符号)若trunc(i/k)=0,则说明这首曲目无需解锁。举个例子:当k=2时,第1首曲目是无需解锁的(trunc(1/2)=0),第7首曲目需要玩家Pass第trunc(7/2)=3首曲目才...原创 2018-04-10 21:21:01 · 316 阅读 · 0 评论 -
【BZOJ4817】【SDOI2017】树点涂色(LCT)
DescriptionBob有一棵n个点的有根树,其中1号点是根节点。Bob在每个点上涂了颜色,并且每个点上的颜色不同。定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色。Bob可能会进行这几种操作: 1 x:把点x到根节点的路径上所有的点染上一种没有用过的新颜色。 2 x y:求x到y的路径的权值。 3 x y:在以x为根的子树中选择一个点,使得这个点到根节点的...原创 2018-04-04 10:31:54 · 223 阅读 · 0 评论 -
【BZOJ4825】【HNOI2017】单旋(线段树,set)
Descriptionclick meSolution手玩发现每次去最大、最小值也就是直接将该节点放到根节点,插入值就是将节点插入到该键值的前驱后继中深度最大的那个的下方。 然后用std::set维护深度,用,线段树维护深度即可。Code/************************************** * Au: Hany01 * Prob:...原创 2018-04-06 15:46:42 · 190 阅读 · 0 评论 -
【BZOJ1095】【ZJOI2007】Hide 捉迷藏(括号序列,线段树)
Description捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的时候,所有的灯都没有被打开。每一次,孩子们...原创 2018-04-06 21:46:26 · 219 阅读 · 0 评论 -
【BZOJ2957】楼房重建(线段树)
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。 为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0...原创 2018-04-24 19:26:05 · 210 阅读 · 0 评论 -
【BZOJ5286】【HNOI2018】转盘(线段树)
Descriptionclick meSolution首先发现答案就是将TiTiT_i进行轮换之后的max{Ti−i}+n−1max{Ti−i}+n−1\max\{T_i-i\}+n-1的最小值(考虑在起点一次性等待很长时间后,直接不停留地一路走过去) 考虑到环的条件非常麻烦,所以考虑将序列倍长,设Pi=Ti−iPi=Ti−iP_i=T_i-i,那么答案就变成了:mini=1...原创 2018-04-24 21:54:26 · 398 阅读 · 0 评论 -
【BZOJ3747】【POI2015】Kinoman(线段树)
Description共有m部电影,编号为1~m,第i部电影的好看值为w[i]。 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部。 你可以选择l,r(1<=l<=r<=n),并观看第l,l+1,…,r天内所有的电影。如果同一部电影你观看多于一次,你会感到无聊,于是无法获得这部电影的好看值。所以你希望最大化观看且仅观看过一次的电影的好看值的总和。...原创 2018-05-31 17:11:47 · 249 阅读 · 0 评论 -
【BZOJ4012】【HNOI2015】开店(树链剖分,主席树)
Description风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到人生哲学。最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱。这样的 想法当然非常好啦,但是她们也发现她们面临着一个问题,那就是店开在哪里,面 向什么样的人群。很神奇的是,幻想乡的地图是一个树形结构,幻想乡一共有 n 个地方,编号为 1 到 n,被 n-1 条带权的边连接起来。每个地方都住着...原创 2018-09-28 23:46:46 · 241 阅读 · 0 评论