线段树
文章平均质量分 54
SC.ldxcaicai
我很菜=_=
展开
-
2018.06.29 NOIP模拟 排列(线段树)
排列(premu.cpp) 【题目描述】 对于一个 1 到 n 的排列,逆序数的定义为:排列中第 i 位 ai的逆序数就是 a1..ai-1中比 ai大的数的个数。另外用 pi表示 a1,…,ai的逆序数和(即 pi为逆序数的前缀和)。 若知道 n 和 pi,则就能求得原排列。 现在对于排列{ai},给出 n 和{pi},请你还原这个排列。【输入格式】 第一行输入一个数正整数 n。...原创 2018-10-11 23:02:53 · 255 阅读 · 0 评论 -
洛谷P1505 [国家集训队]旅游(树链剖分)
旅游 题目描述 Ray 乐忠于旅游,这次他来到了T 城。T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接。为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间有且只有一条路径。换句话说, T 城中只有N − 1 座桥。Ray 发现,有些桥上可以看到美丽的景色,让人心情愉悦,但有些桥狭窄泥泞,令人烦躁。于是,他给每座桥定义一个愉悦度w,也就是说,Ray 经过...原创 2018-06-29 23:18:05 · 312 阅读 · 0 评论 -
2018.06.29 NOIP模拟 旅馆(线段树)
旅馆【问题描述】OIEROIEROIER 们最近的旅游计划,是到长春净月潭,享受那里的湖光山色,以及明 媚的阳光。你作为整个旅游的策划者和负责人,选择在潭边的一家著名的旅馆住 宿。这个巨大的旅馆一共有 NNN (111 <=<=NNN <=<=500005000050000)间客房,它们在同一层楼中顺次原创 2018-10-11 23:04:19 · 445 阅读 · 1 评论 -
BZOJ 3932: [CQOI2015]任务查询系统(主席树)
3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MBDescription 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分。超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行 ),其...原创 2018-06-30 12:40:05 · 248 阅读 · 0 评论 -
树的操作(换根树剖)
描述 XXX和 YYY在愉快地刷题。有一道题是这样的:给你一棵 n 个节点的有根树,每个节点有 一个权植。你要支持两种操作:查询以某棵树为根的子树的权值和,给以某个节点为根的整 棵子树的所有点的权值都加上一个值。机智的 XXX 很开心地用LLL教授 讲过的某些东西水水水水过了这道题。但是可怕的出题人又增加了一种操作:将根节点改为第 u 号节点。于是XXX和YYY 就不会 做了。按照一惯的逻辑...原创 2018-06-30 23:19:32 · 1094 阅读 · 0 评论 -
BZOJ3083: 遥远的国度(换根树剖)
3083: 遥远的国度 Time Limit: 10 Sec Memory Limit: 512 MB Description 描述 zcwwzdjn在追杀十分sb的zhx,而zhx逃入了一个遥远的国度。当zcwwzdjn准备进入遥远的国度继续追杀时,守护神RapiD阻拦了zcwwzdjn的去路,他需要zcwwzdjn完成任务后才能进入遥远的国度继续追杀。 问题是这样的:遥远的国度有n...原创 2018-06-30 23:24:05 · 217 阅读 · 0 评论 -
2018.07.08 hdu6183 Color it(线段树)
Color it Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others) Problem Description Do you like painting? Little D doesn’t like painting, especially messy color pai...原创 2018-07-08 09:47:11 · 279 阅读 · 0 评论 -
2018.07.08 hdu1394 Minimum Inversion Number(线段树)
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description The inversion number of a given number sequence a1, a2, …, an is the...原创 2018-07-08 10:22:58 · 243 阅读 · 0 评论 -
2018.07.08 hdu4521 小明系列问题——小明序列(线段树+简单dp)
小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Problem Description 大家都知道小明最喜欢研究跟序列有关的问题了,可是也就因为这样,小明几乎已经玩遍各种序列问题了。可怜的小明苦苦地在各大网站上寻找着新的序列问题,可是找来找去都...原创 2018-07-08 11:06:12 · 266 阅读 · 0 评论 -
2018.07.08 POJ 2481 Cows(线段树)
Cows Time Limit: 3000MS Memory Limit: 65536K Description Farmer John’s cows have discovered that the clover growing along the ridge of the hill (which we can think of as a one-dimensional nu...原创 2018-07-08 11:51:46 · 233 阅读 · 0 评论 -
2018.06.26 NOIP模拟 纪念碑(线段树+扫描线)
题解: 题目背景 SOURCE:NOIP2015−GDZSJNZXSOURCE:NOIP2015−GDZSJNZXSOURCE:NOIP2015-GDZSJNZX(难) 题目描述 203420342034年,纪念中学决定修建校庆100100100周年纪念碑,作为杰出校友的你被找了过来,帮校方确定纪念碑的选址。 纪念中学的土地可以看作是一个长为 nnn,宽为 mmm 的矩形。它由 n∗mn...原创 2018-10-11 22:57:03 · 292 阅读 · 0 评论 -
「TJOI2018」数学计算(线段树)
描述 小豆现在有一个数 xxx ,初始值为 111 。 小豆有 QQQ 次操作,操作有两种类型: 111 mm m : x=x×mx=x×mx=x×m ,输出 xxx modmodmod MMM ; 222 pospospos: x=x/x=x/x=x/ 第pospos pos 次操作所乘的数(保证第 pospospos 次操作一定为类型 111,对于每一个类型 111 的操作至多会被除一...原创 2018-06-26 20:50:10 · 375 阅读 · 0 评论 -
2018.07.08 hdu5316 Magician(线段树)
Magician Problem Description Fantasy magicians usually gain their ability through one of three usual methods: possessing it as an innate talent, gaining it through study and practice, or receiving i...原创 2018-07-08 22:30:17 · 223 阅读 · 0 评论 -
2018.07.08 NOIP模拟 好数(线段树)
好数 题目背景 SOURCE:NOIP2016-AHSDFZ T3 题目描述 我们定义一个非负整数是“好数”,当且仅当它符合以下条件之一: 1. 这个数是 0 或 1 。 2. 所有小于这个数且与它互质的正整数可以排成一个等差数列,例如,8 就是一个好数,因为 1,3,5,7 排成了等差数列。 给出 N 个非负整数,然后进行如下三个操作: 1. 询问区间 [L,R] 有多少个好数。...原创 2018-10-11 23:11:17 · 268 阅读 · 0 评论 -
2018.06.27 NOIP模拟 节目(支配树+可持久化线段树)
题目背景 SOURCE:NOIP2015-GDZSJNZX(难) 题目描述 学校一年一度的学生艺术节开始啦!在这次的艺术节上总共有 N 个节目,并且总共也有 N 个舞台供大家表演。其中第 i 个节目的表演时间为第 i 个单位时间,表演的舞台为 Ai ,注意可能有多个节目使用同一个舞台。作为 Tom 的忠实粉丝之一的 Alice,当然要来逛一下啦,顺便看一下能不能要到 Tom 的签名。 Al...原创 2018-10-11 22:59:20 · 577 阅读 · 0 评论 -
HDU Rikka with Phi(线段树)
Rikka with Phi Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Problem Description Rikka and Yuta are interested in Phi function (which is known as Euler’s to...原创 2018-07-03 11:53:56 · 327 阅读 · 0 评论 -
NOIP训练 与或(线段树)
与或描述 样例输入 5 8 1 3 2 5 4 3 1 3 2 1 1 5 3 1 3 1 1 4 6 2 3 4 1 3 2 3 2 2 3 4 3 1 5 样例输出 3 5 3 7 提示 对于30%数据,N,Q<=2000 另有30%数据,第三类操作L==R 对于100%数据,N,Q<原创 2018-06-28 22:51:54 · 567 阅读 · 2 评论 -
2018.07.23 洛谷P4513 小白逛公园(线段树)
传送门 线段树常规操作了解一下。 单点修改维护区间最大连续和。 对于一个区间,维护区间从左端点开始的连续最大和,从右端点开始的连续最大和,整个区间最大和,区间和。 代码如下:#include<bits/stdc++.h>#define N 500005#define lc (p<<1)#define rc (p<<1|1)#define ...原创 2018-07-23 13:41:26 · 216 阅读 · 0 评论 -
2018.07.23 hdu5828 Rikka with Sequence(线段树)
传送门 这道题维护区间加,区间开根,区间求和。 线段树常规操作。 首先回忆两道简单得多的线段树。 第一个:区间覆盖,区间加,区间求和。 第二个:区间开根,区间求和。 这两个是名副其实的常规操作。 但这道题如果学习没有区间加的做法维护最大值很容易卡掉。 所以怎么做呢? 区间加和区间求和就略了。 考虑到开根的性质,显然一段区间的数多开几次根差就不大了。 这样的话,我们维护区间最大...原创 2018-07-23 15:20:33 · 234 阅读 · 0 评论 -
2018.07.11 线段树基本模板复习
听了一天的dpdpdp,晚上复习一下线段树的板子//线段树维护区间增加(减少),区间最大值,区间最小值,区间和 #include<bits/stdc++.h>//宏命令替换常量和左右儿子标记,以及当前线段树节点表示的[l,r]的mid值 #define lc (p<<1)#define rc (p<<1|1)原创 2018-07-11 23:34:49 · 354 阅读 · 1 评论 -
2018.07.23[PA2015]Siano(线段树)
[PA2015]Siano描述Description农夫Byteasar买了一片n亩的土地,他要在这上面种草。 他在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[i]厘米。 Byteasar一共会进行m次收割,其中第i次收割在第d[i]天,并把所有高度大于等于b[i]的部分全部割去。Byteasar想知道,每次收割得到的草的高度总和是多少,你能帮帮他吗...原创 2018-07-23 17:01:28 · 1027 阅读 · 0 评论 -
2018.07.23 洛谷P4097 [HEOI2013]Segment(李超线段树)
传送门 给出一个二维平面,给出若干根线段,求出xxx坐标为x0x0x_0时在最上方的线段的标号(若有多条输出最小的)。 线段树好题,这题是李超线段树板子题。 没学过的这道题可以让你很好的理解李超线段树,下面讲讲这是什么东西。 先闲扯一句没用的:维护这个信息就相当于维护实数域上插入等差数列求单点的最大值的最小标号。 下面切入正题: 李超线段树的每个节点Tl,rTl,rT_{l,r}维护的...原创 2018-07-23 22:04:07 · 262 阅读 · 0 评论 -
2018.07.23 codeforces 438D. The Child and Sequence(线段树)
传送门 线段树维护区间取模,单点修改,区间求和。 这题老套路了,对一个数来说,每次取模至少让它减少一半,这样每次单点修改对时间复杂度的贡献就是一个logloglog,所以维护区间最大值剪枝,然后每次单点暴力取模,这样的话时间复杂度为O(nlogn)O(nlogn)O(nlogn)。 代码如下:#include<bits/stdc++.h>#define lc (p&lt...原创 2018-07-23 23:04:17 · 479 阅读 · 0 评论 -
2018.07.24 bzoj3531: [Sdoi2014]旅行(树链剖分+动态开点)
传送门 树链剖分。 如何维护? 如果颜色少直接每种颜色一颗线段树走人。 但这题颜色数量不大于1e51e51e5,空间难以承受。 因此我们动态开点(毕竟所有点数加起来只有1e51e51e5) 其余就是树链剖分的基本操作了。代码如下:#include<bits/stdc++.h>#define N 3000005#define lc T[p].l#define r...原创 2018-07-24 21:26:12 · 161 阅读 · 0 评论 -
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 · 406 阅读 · 0 评论 -
2018.07.25 hdu5306Gorgeous Sequence(线段树)
传送门 线段树基本操作。 要求维护区间取minminmin(给定一个数xxx,让整个区间中的数都变成min(x,a[i])min(x,a[i])min(x,a[i])) 然后是查询区间最大与区间和。 第一眼看到以为是maxmaxmax和minminmin直接剪枝,结果写了一发发现挂了,然后找到了一篇叫做segmentsegmentsegment treetreetree beatsbeat...原创 2018-07-25 14:21:01 · 373 阅读 · 0 评论 -
2018.07.25 bzoj3878: [Ahoi2014&Jsoi2014]奇怪的计算器(线段树)
传送门 线段树综合。 让我想起一道叫做sainosainosaino的题,这题就是那题的强化版本。 说说做法吧: 跟sainosainosaino一样,当我们把a[i]a[i]a[i]排成有序的之后,就会保证在若干次操作后整个数列仍然是单调的。 首先加减可以看成一个操作,L,RL,RL,R的限制也只相当于一个操作,因此这道题要我们维护这几个操作: 1.区间加 2.区间乘 3.区间加...原创 2018-07-25 17:24:34 · 265 阅读 · 0 评论 -
2018.07.28 uoj#169. 【UR #11】元旦老人与数列(线段树)
传送门 线段树好题。 维护区间加,区间取最大值,维护区间最小值,历史区间最小值。 同样先考虑不用维护历史区间最小值的情况,这个可以参考这道题的解法,维护区间最小和次小值可以解决前两个操作,然后使用历史标记的常规维护方式合并标记更新就行了。 代码:#include<bits/stdc++.h>#define lc (p<<1)#define rc (p&a原创 2018-07-28 15:25:18 · 227 阅读 · 0 评论 -
线段树(合并/分治)&&重/长链剖分&&主席树专题(持续更新中)
常规线段树(简单)模板 树剖区间取负,单点修改维护最大最小总和 单点修改维护根节点乘积 维护区间连续(0/1)(0/1)(0/1)的长度 根据逆序对数还原排列 双指针+线段树永久化标记 505050多棵线段树动态开点 线段树(树状数组)求逆序对 单点插入区间查询 区间开根区间求和 单点修改区间最大连续和线段树与算法(简单)优化dpdpdp 线段树合并 李超线...原创 2018-07-28 16:01:09 · 2903 阅读 · 9 评论 -
2018.07.20 bzoj3211: 花神游历各国(线段树)
传送门 维护区间开方,区间求和。这个是线段树常规操作。 显然一个数被开方若干次之后要么是1,要么是0,所以用线段树维护区间最大和区间和,如果区间最大不超过1就剪枝剪掉,不然就继续递归直到叶节点时停下进行单点修改。虽然这方法看起来很暴力,但实际上由于只有开方这一个操作,时间复杂度是有保障的。代码如下:#include<bits/stdc++.h>#define N 10...原创 2018-07-20 15:10:44 · 221 阅读 · 0 评论 -
2018.07.29~30 uoj#170. Picks loves segment tree VIII(线段树)
传送门 线段树好题。 维护区间取两种最值,区间加,求区间两种历史最值,区间最小值。 自己的写法调了一个晚上+一个上午+一个下午+一个晚上并没有调出来,909090分草草收场。 于是我开始学习新的写法。 也就是封装再封装。 然后发现自己的方法的确有不严谨的地方,但并不好改,于是写了一个凌晨参考了xuyixuanxuyixuanxuyixuan神犇的写法调过了这题。 实际上就是我们对区间...原创 2018-07-30 00:26:43 · 370 阅读 · 0 评论 -
2018.08.04 spoj TTM to the moon(主席树)
spoj传送门 vjudge传送门 主席树板子题。 支持历史版本的区间和,区间和,区间修改和时光倒流。 其中新奇一点的也只有区间修改了,这个东西直接标记永久化就行了。 如果想下传标记的话也行,需要在pushdown的时候新建一波节点。 代码:#include<cstdio>#include<cctype>#define ll long long#d...原创 2018-08-03 16:37:33 · 257 阅读 · 0 评论 -
2018.07.30 bzoj4355: Play with sequence(线段树)
传送门 维护区间覆盖成非负数,区间变成max(xi+a,0)max(xi+a,0)max(x_i+a,0),询问区间中000的个数。 由于每次操作之后区间中都是非负数,因此相当于只用维护最小值和最小值的个数。 对于将一个区间变成max(xi+a,0)max(xi+a,0)max(x_i+a,0)的操作,我的想法是将它转化成xi=xi+axi=xi+ax_i=x_i+a,xi=max(xi,0...原创 2018-07-30 13:38:03 · 239 阅读 · 0 评论 -
2018.07.22 codeforces750E(线段树维护状态转移)
传送门 给出一个数字字串,给出若干个询问,询问在字串的一段区间保证出现201720172017而不出现201620162016需要删去的最少字符。 下面定义5个状态。 状态0:连2都没有 状态1:只有2,没有0连在后面 状态2:出现20,没有1连在后面 状态3:出现201,没有7连在后面 状态4:出现2017 这样每次询问时,用f[i][j]f[i][j]f[i][j]表示从状态i...原创 2018-07-22 13:17:35 · 787 阅读 · 0 评论 -
2018.07.30 cogs2632. [HZOI 2016] 数列操作d(线段树)
传送门 线段树基本操作 区间加等差数列,维护区间和。 对于每个区间维护等差数列首项和公差,易证这两个东西都是可合并的,然后使用小学奥数的知识就可以切掉这题。 代码:#include<bits/stdc++.h>#define lc (p<<1)#define rc (p<<1|1)#define mid (T[p].l+T[p].r>&a原创 2018-07-30 16:00:59 · 437 阅读 · 0 评论 -
2018.08.04 cogs2633. [HZOI 2016]数列操作e(线段树)
传送门 支持区间加w(i−ql+1)2w(i−ql+1)2w(i-ql+1)^2,将这个式子直接展开变成区间加wi2+w(ql−1)2+2w(1−ql)iwi2+w(ql−1)2+2w(1−ql)iwi^2+w(ql-1)^2+2w(1-ql)i,再选i做主元,会变成wi2+(2w−2w∗ql)i+w(ql−1)2wi2+(2w−2w∗ql)i+w(ql−1)2wi^2+(2w-2w*ql)i+...原创 2018-08-04 10:36:51 · 250 阅读 · 0 评论 -
2018.08.04 洛谷P3380 【模板】二逼平衡树(树套树)
传送门 技不如人,写的权值线段树套线段树在bzoj上无论如何都卡不过空间。 这是一道树套树简单题,感觉没什么好说的。 直接权值线段树套平衡树就行了。 代码:#include<bits/stdc++.h>#define N 200000000using namespace std;int n,m,t1,t2,t3,t4;int siz[30000005],son[30...原创 2018-08-04 14:54:17 · 556 阅读 · 0 评论 -
2018.07.31cogs2964. 数列操作η(线段树)
传送门 线段树基本操作。 我们维护当前所有的aiaia_i%bibib_i与bibib_i差量的最小值,这样就把第一个操作变成了区间减法。 如果当前区间的差量最小值是大于111的,说明在这次减法过后整个区间对答案不会有新的贡献,直接打上标记。 否则我们递归到叶子结点,重新赋值差量并统计对答案的贡献,整个东西开个树状数组记录就好。 代码:#include&amp;amp;lt;bits/stdc+...原创 2018-07-31 15:34:00 · 226 阅读 · 0 评论 -
2018.07.27 bzoj3064: Tyvj 1518 CPU监控(线段树)
传送门 线段树好题。 维护区间加,区间覆盖,区间最大,区间历史最大。 这个东西在国家集训队2016论文集之《区间最值操作与历史最值问题——杭州学军中学 吉如一》中讲的已经很详细了。 简单来说是这样的: 我们先考虑没有区间覆盖的情况,如果只有区间加的话,我们维护一个标记historyhistoryhistory_addaddadd来表示当前区间在上一次区间加之后最大的历史加标记,这样的话可...原创 2018-07-27 23:15:28 · 236 阅读 · 0 评论 -
2018.07.28 uoj#164. 【清华集训2015】V(线段树)
传送门 线段树好题。 要求支持的操作: 1.区间变成max(xi−a,0)max(xi−a,0)max(x_i-a,0) 2.区间加 3.区间覆盖 4.询问单点最值 5.询问单点历史最值 注:以下提到的标记都是向下传递的懒标记。 这题直接更新区间最大值貌似不好维护,因此我们需要更换思路,对于每个节点维护一个标记(a,b)(a,b)(a,b),来表示在上一次修改这个区间之后当前区间...原创 2018-07-28 10:36:58 · 245 阅读 · 0 评论