线段树
Vectorxj
这个作者很懒,什么都没留下…
展开
-
BZOJ 1012 [线段树]
1012: [JSOI2008]最大数maxnumber 现在请求你维护一个数列,要求提供以下两种操作:1、 查询操作。语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。2、 插入操作。语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数原创 2016-05-24 14:14:16 · 405 阅读 · 0 评论 -
[线段树][单调栈] BZOJ 4527 && CF 407E: K-D-Sequence
SolutionSolution可以把同余的串一起考虑,然后把所有数除以dd。变成公差为11的情况。 满足这样的条件MAXL≤i≤RAi−MINL≤i≤RAi−R≤k−LMAX_{L\le i\le R}A_i-MIN_{L\le i\le R}A_i-R\le k-L 从右往左,用单调栈维护最大值最小值的位置,在线段树上修改上述值就好了。 感觉自己好傻逼。 注意不能有重复的数出现的串。#i原创 2017-12-14 21:18:41 · 398 阅读 · 0 评论 -
LOJ 6062 [Hall定理]
Hall定理:设M(S)M(S)为与SS中的点相连的点集,一个二分图(U,V)(|U|≤|V|)(U,V)(|U|\le|V|)存在完备匹配,当且仅当满足对于任意点集x∈Ux∈U,都有|M(X)|≥|X||M(X)|\ge|X|。DescriptionDescription给出一个长度为nn的数列{aia_i}和一个长度为mm的数列{bib_i},求{aia_i}有多少个长度为mm的连续子数列能与{原创 2017-07-26 11:13:30 · 1343 阅读 · 0 评论 -
[二分图][Hall定理][线段树] ARC076 F - Exhausted?
SolutionSolution根据Hall定理答案就是MAXS⊆U(|N(S)|−|S|)\text{MAX}_{S\subseteq U}(|N(S)|-|S|)设一个点对(s,t)(s,t)代表区间[1,s]∪[t,m][1,s]\cup[t,m]。那么如果这个作为N(S)N(S),就有Li≤s,Ri≥t,i∈SL_i\le s,R_i\ge t,i\in S。 把这些点放在平面内就相当于数原创 2018-01-03 11:15:16 · 385 阅读 · 0 评论 -
BZOJ 3514 [LCT][主席树]
Description" role="presentation" style="position: relative;">DescriptionDescriptionDescriptionN" role="presentation" style="position: relative;">NNN个点M" role="presentation" style="position: relative原创 2017-09-19 18:20:23 · 487 阅读 · 0 评论 -
[线段树] LOJ #535. 「LibreOJ Round #6」花火
SolutionSolutionSolution现将所有数转化为二维平面上的点(i,hi)(i,hi)(i,h_i)。 几个性质:交换两个数(i,j),(i≤j,hi>hj)(i,j),(i≤j,hi>hj)(i,j),(i\le j, h_i\gt h_j),减少了的逆序对数是矩形((i,hi),(j,hj))((i,hi),(j,hj))\big((i,h_i),(j,...原创 2018-02-26 19:30:19 · 610 阅读 · 0 评论 -
[线段树分治][DP] LOJ #534. 「LibreOJ Round #6」花团
SolutionSolutionSolution操作相当于是动态的做一个背包DP。 离线的话,线段树分治一下。 因为结尾是已知的,可以一边分治,得到一个修改操作,就插到线段树。 只要保证分治从左到右,每个操作都在线段树上得到了实现。 1.5×1041.5×1041.5\times10^4可以跑O(n2logn)O(n2logn)\mathcal{O}(n^2\log{n})了解一下。...原创 2018-02-26 20:59:17 · 596 阅读 · 0 评论 -
[线段树分治][线性基]BZOJ 4184: shallot
DescriptionDescriptionDescription小苗去市场上买了一捆小葱苗,她突然一时兴起,于是她在每颗小葱苗上写上一个数字,然后把小葱叫过来玩游戏。 每个时刻她会给小葱一颗小葱苗或者是从小葱手里拿走一颗小葱苗,并且让小葱从自己手中的小葱苗里选出一些小葱苗使得选出的小葱苗上的数字的异或和最大。SolutionSolutionSolution挺显然的分治+线性基的...原创 2017-10-16 15:22:40 · 458 阅读 · 0 评论 -
[后缀自动机][树上启发式合并] LOJ #6041. 「雅礼集训 2017 Day7」事情的相似度
SolutionSolutionSolutionO(nn−−√logn)O(nnlogn)\mathcal{O}(n\sqrt n\log n)的莫队连500005000050000都过不了qwq。%%%gjghfdgjghfd教我SAM+树上启发式合并的做法。 每两个后缀的贡献会在LCA处统计到。 一个暴力的想法就是枚举LCA,那就只需要考虑子树中的点对。有实际贡献意义的就...原创 2018-03-07 10:23:30 · 496 阅读 · 0 评论 -
[李超线段树] BZOJ 3165: [Heoi2013]Segment
SolutionSolution裸题。。。 刚开始求线段交点求错了,心态崩了#include <bits/stdc++.h>using namespace std;const double eps = 1e-10;const int N = 101010;const int M1 = 39989;const int M2 = 1000000000;typedef pair<int, in原创 2017-12-14 13:02:46 · 282 阅读 · 0 评论 -
CC COT5 [线段树][Treap]
DescriptionDescription维护一个Treap,支持三种操作0 k w0~k~w:插入一个关键字为kk,权值为ww的点。1 k1~k:删除一个关键字为kk的点。2 ku kv2~k_u~k_v:返回关键字分别为kuk_u和kvk_v两个结点的距离。 SolutionSolution这道题寒假就做到了。。一直不会QAQ 考虑Treap是怎么建的。 对所有键值排序后,以权值最原创 2017-09-14 21:30:52 · 414 阅读 · 0 评论 -
[线段树][简单复杂度分析]LOJ#6029. 「雅礼集训 2017 Day1」市场
DescriptionDescription要求支持区间整除一个正整数,区间加,区间询问最小值,区间求和。SolutionSolution就是复杂度分析吧。。 和以前一道区间开根号的题差不多吧。。 好菜啊。只会做水题了。。#include <bits/stdc++.h>using namespace std;const int N = 101010;const long long INF =原创 2017-10-14 08:12:46 · 648 阅读 · 0 评论 -
BZOJ 4034 [树链剖分][线段树]
如果在一棵树上求两个节点间路径的最大值最小值权值和等等,并且还支持修改某一段路径的权值等等,光靠线段树是不够的,这是就需要树链剖分,将一棵树转化成线段,然后求解。For instance, BZOJ 4034: [HAOI2015]T2 Description 有一棵点数为 N 的树原创 2016-07-05 17:02:31 · 548 阅读 · 0 评论 -
EZOI [NOIP模拟赛][线段树]
给出一个长度为nn 的数列AA,接下来有mm次操作,操作有三种: 1.对于所有的i∈[l,r]i∈[l,r],将AiA_i变成Ai+xA_i+x。 2.对于所有的i∈[l,r]i∈[l,r],将AiA_i变成 ⌊Ai−−√⌋⌊\sqrt{A_i}⌋ 3.对于所有的i∈[l,r]i∈[l,r],询问AiA_i的和。 很显然的线段树。 如果只有11操作或只有22操作都比较简单,裸的线段树即可。原创 2016-09-25 18:05:01 · 832 阅读 · 0 评论 -
BZOJ 3673 && BZOJ 3674 [可持久化线段树]
n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0<n,m≤2∗1040<n,m≤2*10^4和0<n,m≤2∗1050<n,m≤2*10^5其实就是要打一个可持久化数组。 其实就是要打一个可持久化线段树QAQ 其实一直很想学来着QAQ 以前是打过动态开点线段树原创 2016-09-26 21:30:00 · 353 阅读 · 0 评论 -
BZOJ4568 [线性基][树链剖分][线段树]
DescriptionDescriptionA 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一。每座城市都有一个幸运数字,以纪念碑的形式矗立在这座城市的正中心,作为城市的象征。一些旅行者希望游览 A 国。旅行者计划乘飞机降落在 x 号城市,沿着 x 号城市到 y 号城市之间那条唯一的路径游览,最终从 y 城市起飞离开 A 国。在经过每一座城市时,游览者就会有原创 2017-05-01 12:11:02 · 377 阅读 · 0 评论 -
HDU 4942 [线段树][平衡树]
DescriptionDescription给定一棵平衡树,每个点有一个权值wuw_u。 定义一个valueuvalue_u为uu子树的wvw_v之和。 要求满足以下操作:0 x0~x:对xx左旋。1 x1~x:对xx右旋。2 x2~x:查询xx子树中所有valuevalue的乘积。首先左右旋是不会改变这棵树的中序遍历的(改变就不是平衡树了QAQ)。 然后是一次操作只会改变两个节点的值原创 2017-09-25 18:36:55 · 583 阅读 · 0 评论 -
BZOJ 4817 [LCT][线段树][树链剖分]
DescriptionDescriptionBob有一棵nn个点的有根树,其中11号点是根节点。Bob在每个点上涂了颜色,并且每个点上的颜色不同。 定义一条路径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色。 Bob可能会进行这几种操作:1 x1~x:把点xx到根节点的路径上所有的点染上一种没有用过的新颜色。2 x y2~x~y:求x到y的路径的权值。3 x3~x:在以x为原创 2017-09-15 20:15:16 · 402 阅读 · 0 评论 -
CF 438D The Child and Sequence [线段树]
DescriptionDescription有一个序列要求支持区间求和,单点加,区间取膜。SolutionSolution一个数膜比他小的数一定会减小至少一半。 所以就是O(nlog2n)O(nlog^2n)的。#include <bits/stdc++.h>using namespace std;const int N = 101010;typedef long long ll;inline原创 2017-09-27 18:05:18 · 395 阅读 · 0 评论 -
Codeforces 840D [主席树]
DescriptionDescriptionqq次询问,每次询问区间[l,r][l,r]中出现次数大于⌊(r−l+1)k⌋\lfloor{(r - l + 1)\over k}\rfloor的数的最小值。SolutionSolution跟PBS和gjghfd大神打cf的vp。 这个题跟以前一道区间众数很像,发现k≤5k\le5只要查询区间第⌊(r−l+1)∗ik⌋\lfloor{(r - l +原创 2017-08-20 17:19:01 · 677 阅读 · 0 评论 -
[Manacher][线段树] Codeforces 100032 K - Subpalindromes
SolutionSolutionSolution%%%%%%%%%%%%%%%%%%%%%%%%LargestJN大佬教我做题。 大佬说有点麻烦的大概就是这个东西min{i−L,R−i,len}min{i−L,R−i,len}\text{min}\{i-L,R-i,len\}。 大佬说如果在询问的中点处将询问分开,回文中心在一边的就可以去掉一个minmin\text{min}里的东...原创 2018-03-11 19:14:32 · 435 阅读 · 1 评论