————线段树
BAJim_H
比孤独更可悲的事情,就是根本不知道自己很孤独,或者分明很孤独,却把自己都骗得相信自己不孤独。
展开
-
[JZOJ3397]【GDOI2014模拟】雨天的尾巴
Description 深绘里一直很讨厌雨天。 灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切。 虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连 根拔起,以及田地里的粮食被弄得一片狼藉。 无奈的深绘里和村民们只好等待救济粮来维生。 不过救济粮的发放方式很特别。 首先村落里的一共有n原创 2016-05-23 19:52:01 · 608 阅读 · 0 评论 -
[JZOJ5629]【NOI2018模拟4.4】Map
Description Rin是个特别好动的少女。 一天Rin来到了一个遥远的都市。这个都市有N个建筑,编号从1到N,其中市中心编号为1,这个都市有M条双向通行的街道,每条街道连接着两个不同的建筑,其中某些街道首尾相连连接成了一个环。Rin通过长时间的走访,已经清楚了这个都市的两个特点: 从市中心出发可以到达所有的建筑物。 任意一条街道最多存在与一个简单环中。令Rin心花怒放的原创 2018-04-04 16:12:28 · 208 阅读 · 0 评论 -
[JZOJ5662] 【GDOI2018Day1模拟4.17】尺树寸泓
Description Solution一开始完全想错了,以为旋转只会改动那两个点,实际上它还会把它们祖先全部改掉脑洞可以大开了各位 LCT、splay维护DFS序,凡所应有无所不有然而这是一棵平衡树 无论怎么旋转,中序遍历都不会改变 子树查询就是区间查询对于每个点维护左儿子右儿子大小及权值 直接用线段树维护区间积,支持动态修改即可 复杂度O(NlogN)O(N\log N)Code#i原创 2018-04-20 22:36:42 · 236 阅读 · 0 评论 -
【数据结构】【图论】[JZOJ4864] Dash Speed【无实现】
Description给出n个点的一棵树,每条边有一个承受区间[L,R][L,R] 接下来m个询问,每次询问一个x,表示需要回答所有承受区间包含x的边组成的森林的直径 n,m<=70000,l,r<=nSolution看上去不可做的样子事实上可以用分治的思想,弄出一棵线段树来,对于一条边就将它挂在线段树对应的log个区间上那么现在就相当于单点查询了 我们可以在一开始就将整棵线段树DFS一遍,然原创 2018-04-26 22:27:28 · 257 阅读 · 0 评论 -
【数据结构】[BZOJ4771] 七彩树【无实现】
Description给出一棵n个点的树,每个点有颜色 多次询问以点x为根的子树中距离不超过d的点中不同颜色种类数强制在线 n,m<=500000Solution先考虑如果没有d的限制怎么做将相同颜色的点拉出来,在他们的位置+1,在他们的lca-1 直接在DFS序上查询即可有了D的限制以后,我们将所有点按照深度从小到大一个个插入,用主席树维护,其中线段树维护的是DFS序,每次相当于激活一些点,原创 2018-04-26 22:42:35 · 316 阅读 · 0 评论 -
[JZOJ5710] Mex
Description给出长度为N的序列A M次询问,每次询问一个区间的Mex值Mex(S)Mex(S)Mex(S)表示在集合S中未出现过的最小自然数 强制在线 N,M≤200000N,M≤200000N,M\leq 200000Solution显然值大于n的数都是没用的一个很自然的思路是主席树如果我们直接用主席树维护每种数的出现次数,那我们在查找的时候是无法确定往哪...原创 2018-05-13 16:05:53 · 484 阅读 · 0 评论 -
【树链剖分】【Hall定理】[JZOJ5824][BZOJ5404] Party
Description Solution我们发现颜色种类不多,只有1000种 因此我们可以用bitset来维护颜色集合。我们将这棵树轻重链剖分,用线段树维护链的颜色集合(空间为O(N*1000/32)),若倍增的话空间要多乘上log。 当我们需要查询一条链时,由于没有修改,我们大可以直接记录每个点到所在重链顶的颜色集合,这样原本log^2的时间复杂度就变成log的了。...原创 2018-08-16 22:50:05 · 272 阅读 · 0 评论 -
【杂题】【线段树】[hihocoder #1381] Little Y's Tree
Description 小Y有一棵n个节点的树,每条边都有正的边权。 小J有q个询问,每次小J会删掉这个树中的k条边,这棵树被分成k+1个连通块。小J想知道每个连通块中最远点对距离的和。 这里的询问是互相独立的,即每次都是在小Y的原树上进行操作。 n,q,∑k<=100000,边权<=109n,q,∑k<=100000,边权<=109n,q,\su...原创 2018-09-04 17:10:05 · 205 阅读 · 0 评论 -
[JZOJ5915]【NOIP2018模拟10.19】明日之星
Description给定一棵树,每个节点有一个权值ai和一个字符串siq组询问,每次询问一个字符串S和两个节点x,y求x到y路径上每个节点的字符串在S中出现的次数乘上各自的权值总和。有单点修改权值的操作。n,q&lt;=200000,∑si,∑S≤400000\sum si,\sum S\leq 400000∑si,∑S≤400000强制在线Solution首先对于树上路径的问题...原创 2018-10-20 16:54:07 · 503 阅读 · 0 评论 -
【杂题】[BZOJ3272] ZGG吃东西【线段树】【贪心】
Description给定长度为n的序列Am组询问,每次询问l,r,kl,r,kl,r,k,表示在区间[l,r][l,r][l,r]内选出至多k个不重叠的子段的最大和n,m≤100000,k≤20n,m\leq 100000,k\leq 20n,m≤100000,k≤20Solution五倍经验链接:【BZOJ2288】【POJ Challenge】生日礼物【BZOJ3267】KC采...原创 2018-11-04 11:51:59 · 261 阅读 · 0 评论 -
[JZOJ6028]【GDOI2019模拟2019.2.23】字符串【SAM】【LCT】【线段树】
DescriptionSolution不妨先考虑subtask 2即给出一个字符串S,动态询问[l,r]内本质不同的子串数。有一个非常套路的做法(来自laofu的2018集训队论文):考虑离线。先将这个字符串S的SAM建出来对于SAM上的一个节点,贡献就是它在[l…r]出现的最后一次被l所截的长度。我们将所有询问按右端点排序,从左到右扫r。那么每次相当于在parent树上将一个...原创 2019-02-25 07:41:51 · 386 阅读 · 0 评论 -
[JZOJ6030]【GDOI2019模拟2019.2.25】白白的【树套树】【数据结构】【启发式分裂】
DescriptionSolution只有0操作,我们相当于动态查询一段区间内比某个数大/小的数的个数,直接树套树维护。只有1操作,我们可以对于每一个白白的极长区间都维护一个权值线段树,每次分裂一个区间,直接暴力从线段树中一个个删去较小的那一半区间的影响,同时加入新的权值线段树,并相应计算。显然这两个数据结构互不影响,并且它们能够同时进行,那么合在一起就解决了。总时空复杂度均为O(n...原创 2019-02-25 22:07:10 · 272 阅读 · 0 评论 -
【USACO 2018 December Contest, Platinum Problem 2】Sort It Out [JZOJ100129] 排序【DP】【线段树】
Description以下是翻译魔改版题面:FJ有N条胖头鱼(分别用1…N编号)排成一行。FJ喜欢他的胖头鱼以升序排列,不幸的是现在他们的顺序被打乱了。在过去FJ曾经使用一些诸如“冒泡排序”的开创性的算法来使他的胖头鱼排好序,但今天他想偷个懒。取而代之,他会每次对着一条胖头鱼叫道“按顺序排好”。当一条胖头鱼被叫到的时候,他会确保自己在队伍中的顺序是正确的(从他的角度看来)。只要有一...原创 2019-02-27 10:16:14 · 386 阅读 · 0 评论 -
[JZOJ6074]【GDOI2019模拟2019.3.20】铁路【数据结构】【树状数组】【树链剖分】【线段树合并】
DescriptionSolution老年选手表示真的不太码的动。。。细节太多了,相当难写为啥XJ和ASDFZ的大佬们动不动一写就是6K,7K 300行啊,这也太能码了这题感觉还是蛮套路的。我们首先可以将边的中点也建一个点,现在就只会在点上相交了。分情况讨论要么是两个起点深度相同,一起向上走,走到这两个起点的lca处相交一种是一个起点在子树内,向上走,一个起点在子树外,向下走...原创 2019-03-20 22:13:21 · 287 阅读 · 1 评论 -
[JZOJ6075]【GDOI2019模拟2019.3.20】桥【DP】【线段树】
DescriptionN,M<=100000,S,T<=1e9Solution首先可以感受一下,我们把街道看成一行,那么只有给出的2n个点的纵坐标是有用的,于是我们可以将坐标离散化至O(n)级别。显然出发地和目的地的地位是相同的,因此我们强制要求从编号小的街道走向标号大的街道。我们考虑一个朴素的DP,记F[i][j]F[i][j]F[i][j]表示当前转移到了第i行,连接第...原创 2019-03-21 21:52:16 · 256 阅读 · 0 评论 -
[JZOJ6050]【NOI2019模拟2019.3.11】树上四次求和 【数据结构】【树链剖分】【点分治】
DescriptionSolution一道很简单的题,自己没有想出来,相当不应该一开始我先想的假如直接询问w(i,j)怎么做,但是完全没有思路(后来发现询问w(i,j)比这题难的多)首先那个排列a似乎没什么用,那么以下的表示都忽略掉(把x看做a[x])先化一波式子,可以得到这个结果ansk=∑x=1k∑y=xkdis(x,y)×x(k−y+1)ans_k=\sum\limits_{...原创 2019-03-13 20:37:36 · 378 阅读 · 0 评论 -
[JZOJ6223] 互膜 【线段树】【单调栈】【DP】
DescriptionSolution我们可以设一个朴素的DP记f[i][0/1]f[i][0/1]f[i][0/1]表示第i−1i-1i−1轮上一个人是否操作了i这个位置,当前先手-当前后手的权值的最大值。显然Ans=Sum+f[1][0]Ans=Sum+f[1][0]Ans=Sum+f[1][0]容易得到转移f[i][0]=−f[i+1][1]+s[i]f[i][0]=-f[i+1...原创 2019-06-30 22:15:18 · 219 阅读 · 0 评论 -
【杂题】[CodeForces 1172F] Nauuo and Bug【数据结构】【线段树】
Description给出一个长度为n的序列a和一个整数p有m组询问,每组询问给出一个区间[l,r][l,r][l,r]你需要给出下面这个过程的结果ans = 0 for i from l to r{ ans = ans + a[i] if ans > p then ans = ans - p;}return ans n≤106n\leq 10^6n≤106m&am...原创 2019-06-19 20:13:57 · 233 阅读 · 0 评论 -
[JZOJ5609]【NOI2018模拟3.28】Tree
Description给你一颗有 n 个点的树,其中 1 号点为根节点,每个点都有一个权值 val[i]val[i] 你可以从树中选择一些点,注意如果 i 与 j 都被选中且 j 在 i 的子树内,那么必须满足 val[i]>val[j]val[i] >val[j] 请你求出最多能同时选出多少个点 n<=100000Solution有两种思路 第一种是先考虑一条链的情况,然后将它拓展到树原创 2018-03-28 16:59:37 · 340 阅读 · 0 评论 -
利用线段树维护凸壳(李超树)
Text之前听lyd_729神犇讲过关于李超树的思想,大概是标记永久化一类的要求支持动态插入直线(线段),动态查询上/下凸壳与x=k的交点,k为整数 今天做模拟赛的时候刚好碰到一题,然而忘得差不多了 考场上自己YY了一个:线段树每一个区间都保存一条直线,表示在这个区间中这条直线有可能有一部分为凸壳中的边当我们需要插入一条直线(线段),与当前线段树区间保存的直线进行比较,看哪一个斜率大,哪一个更优原创 2018-04-01 15:30:52 · 1417 阅读 · 0 评论 -
[JZOJ5620]【NOI2018模拟4.1】修炼
Description Solution将所有商品按时间排序 那么只有这些时间点是有用的设F[i]表示当前在第i个魂导器卖的时间,手上没有魂导器所能获得的最大魂力 N^2转移很简单然后我们发现一个转移可以看成一个以时间为变量的一次函数那么直接用线段树维护若干直线形成上凸壳即可(标记永久化、李超树) 具体可以看我的BLOG线段树维护凸壳 复杂度O(NlogD)O...原创 2018-04-01 15:16:18 · 442 阅读 · 0 评论 -
[BZOJ4551][JZOJ4604]【TJOI&HEOI2016】D1T1 树
Description 在2016年,佳媛姐姐刚刚学习了树,非常开心。 现在他想解决这样一个问题: 给定一颗有根树(根为1),有以下两种操作: 1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标记,而且对于某个结点,可以打多次标记。) 2. 询问操作:询问某个结点最近的一个打了标记的祖先(这个结点本身也算自己的祖 先)你能帮帮他吗?So原创 2016-07-11 14:36:43 · 718 阅读 · 0 评论 -
[BZOJ4552][JZOJ4605]【TJOI&HEOI2016】D1T2 排序
Description 在2016年,佳媛姐姐喜欢上了数字序列。因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他。 这个难题是这样子的:给出一个1到n的全排列,现在对这个全排列序列进行m次局部排序,排序分为两种: (0,l,r)(0,l,r)表示将区间[l,r][l,r]的数字升序排序 (1,l,r)(1,l,r)表示将区间[l,r][l原创 2016-07-12 14:16:40 · 590 阅读 · 0 评论 -
[JZOJ4603] 颜料大乱斗
Description Solution区间修改区间求种数。维护cc棵线段树,维护区间和。直接修改每次情况。查询时只要这个区间内有就答案+1注意修改和查询时如果已经是0了可以直接退出。(否则会炸时间)Code#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>#includ原创 2016-07-15 16:13:15 · 382 阅读 · 0 评论 -
[JZOJ4638] 第三条跑道(By--A_Crazy_Czy)
Description Solution观察欧拉函数的公式。ϕ(N)=N∏i=1k(1−P−1i)\Large \phi(N)=N\prod\limits_{i=1}^{k} (1-P_i^{-1})如果是一个区间A[l..r]A[l..r]求欧拉函数积显然是∏i=lra[i]∏j=1k(1−P−1j)\Large\prod\limits_{i=l}^{r}a[i]\prod\limits_{j=原创 2016-07-16 15:08:56 · 588 阅读 · 0 评论 -
[JZOJ4680] 自然数 [HDU4747] Mex
Description Solution50%显然,超过N−1N-1的数是没有什么用的,所以可以忽略掉。 枚举区间左边界,右边界左边界开始向右扫,维护一个标记数组和答案指针,指针随着标记的更新而增大O(N2)O(N^2)轻松解决100%我们发现,mex(i,i)mex(i,i)到mex(i,n)mex(i,n)是单调不减的 先用5050分的方法跑出mex(1,1)mex(1,1)到mex(1,原创 2016-08-16 15:59:24 · 1606 阅读 · 0 评论 -
[JZOJ4694] 火神的鱼 [HDU5283] Senior's Fish
Description 火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总原创 2016-08-16 16:19:59 · 577 阅读 · 0 评论 -
[JZOJ4866] 禅与园林艺术
Description哲学的题目名字。。。 上了大学之后,小W和小Z一起报了一门水课,在做作业时遇到了问题。 有一个长度为 n 的数列{ai},为一列树木的美观值。 现在有m 次询问,每次给出三个数l,r和P, 询问对于所有的l <= l’ <= r’ <= r (a[l’] + a[l’ + 1] + … + a[r’]) mod P的最小值。 对于20%的数据原创 2016-11-09 19:45:42 · 534 阅读 · 0 评论 -
[JZOJ5187]【NOIP2017提高组模拟6.30】tty's maze
Descrption给出一个N*M的矩阵,每个格子有正整数权值,每一列的格子权值都是一样的,上下左右走格子,第一次走到这个格子可以获得之,总共可以走K个格子(走过的也算)。第一行可以瞬移到最后一行求最大获得权值 N,M<=1e7,权值<=1e7,K<=nmSolution第一行可以一步走到最后一行,这意味着,从左向右走,无论我们从哪一个位置进入这一列,都可以不走重复路的获得完这一列的权值,因为一进原创 2017-07-01 15:38:55 · 362 阅读 · 0 评论 -
[JZOJ5402]【NOIP2017提高A组模拟10.8】God Knows (口胡)
Description Solution设f[i]f[i]表示前i个点已经被解决了,并且第i个点选,最小代价。 那么可以考虑转移 f[i]=min(f[j]+c[i]),j<i,p[j]<p[i]f[i]=min(f[j]+c[i]),j<i,p[j]<p[i]且∀k,j<k<i,p[k]<p[j]或p[k]>p[i]\forall k,j<k<i,p[k]<p[j]或p[k]>p[i] 即原创 2017-10-17 16:42:46 · 534 阅读 · 0 评论 -
[JZOJ5405]【NOIP2017提高A组模拟10.10】Permutation
Description 你有一个长度为n 的排列P 与一个正整数K 你可以进行如下操作若干次使得排列的字典序尽量小 对于两个满足|i-j|>=K 且|Pi-Pj| = 1 的下标i 与j,交换Pi 与Pj 对于100% 的数据满足n <= 500000Solution隔着K个数之间交换比较麻烦,不如变换一下题意原序列记录每个位置上的数什么 不妨新开一个数组Q记录每个数在原创 2017-10-12 16:00:08 · 377 阅读 · 0 评论 -
[JZOJ5456]【NOIP2017提高A组冲刺11.6】奇怪的队列
Description nodgd的粉丝太多了,每天都会有很多人排队要签名。 今天有n个人排队,每个人的身高都是一个整数,且互不相同。很不巧,nodgd今天去忙别的事情去了,就只好让这些粉丝们明天再来。同时nodgd提出了一个要求,每个人都要记住自己前面与多少个比自己高的人,以便于明天恢复到今天的顺序。 但是,粉丝们或多或少都是有些失望的,失望使她们晕头转向、神魂颠倒,已经分不清楚哪原创 2017-11-06 15:40:04 · 356 阅读 · 0 评论 -
[JZOJ5214]【HEOI、SXOI2017】相逢是问候(口胡)
Description Solution指数是不能取模的,这很尴尬但是有欧拉定理 若gcd(c,p)=1gcd(c,p)=1,那么cx≡cxmodφ(p)modpc^x\equiv c^{x \mod φ(p)} \mod p因为根据欧拉定理cφ(p)≡1modpc^{φ(p)}\equiv1 \mod p但是此处c,p并不一定互质有欧拉定理的扩展(为什么还有这种操作。。。。) cx≡c(xm原创 2017-07-09 21:48:53 · 641 阅读 · 1 评论 -
[JZOJ5543] 超越潜能
Description Solution转化题意 坐标为偶数保证了不会停留在坐标轴上首先可以发现两维坐标是独立的那么分开考虑,令S为坐标前缀和那么第i操作后能造成伤害的条件是 S[i]∗S[i−1]0S[i]*S[i-1],也可以写成min(S[i],S[i−1])0max(S[i],S[i−1])min(S[i],S[i-1])既然题目是指针左移右移,那么这肯定原创 2018-01-24 10:28:22 · 271 阅读 · 0 评论 -
[JZOJ5512] 送你一棵圣诞树
Description一棵 n 个点的树, 树根为 1. 一开始每个点上有一个 1…n 的颜色 ci, 不同点颜色可以相同. 现在有 q 次操作, 分为两种类型: • 1 u l r: 询问子树 u 中有多少种在 l 到 r 之间的颜色至少出现了一次 • 2 u c: 将 u 的颜色修改为 c 要求强制在线 n,qSolution这题先不要转到DFS序列上做原创 2018-01-09 12:21:08 · 2040 阅读 · 0 评论 -
[JZOJ4331] 树
Description给定一个n个节点的无根树,每个点有点权,要求将这棵树分成若干条路径(每个点在且仅在一条路径中),使得每条路径的点权和非负。 求方案数 模1000000007n≤100000,|点权|≤10000n\leq 100000,|点权|\leq 10000Solution随便弄个根设F[i]表示i这个点为根的子树已经全部覆盖完的方案数那么现在要找到一条路径来原创 2018-01-19 22:52:16 · 245 阅读 · 0 评论 -
[JZOJ5577]【NOI2018模拟3.11】派对
Description 你想举行一场派对,有m个朋友会来参加。 你有n个房间,由n-1条道路(有长度)连接,形成一个树结构。你需要给每个朋友安排一个房间,满足以下条件: 每个朋友住在一个单独的房间; 存在一个房间(不一定要有人),使得每个朋友到它的距离不超过k。求方案数对998244353取模的结果。 对于全部数据,1<=m<=n<=10^5,1&...原创 2018-03-14 21:30:17 · 476 阅读 · 0 评论 -
[JZOJ5618]【NOI2018模拟3.31】华胥梦天
DescriptionN个数的序列A 要求支持区间对一个数取min,单点做减法且对0取max,区间求和 N≤500000,Ai≤109N\leq500000,A_i\leq10^9Solution经典套路题啊(参见吉老师的SegmentTree-Beats)之前CTY讲课的时候还跟他谈笑风生来着说这不是大暴力么 结果过没多久就忘了qwq直接用线段树维护区间最大值、最大值有多少个和区间次大值原创 2018-03-31 22:35:25 · 215 阅读 · 0 评论 -
[JZOJ6241]【NOI2019模拟2019.6.29】字符串【数据结构】【字符串】
Description给出一个长为n的字符串SSS和一个长为n的序列aaa定义一个函数f(l,r)f(l,r)f(l,r)表示子串S[l..r]S[l..r]S[l..r]的任意两个后缀的最长公共前缀的最大值。现在有q组询问,每组询问给出L,R,xL,R,xL,R,x你需要找到一个子串S[l,r]S[l,r]S[l,r]满足[l,r]⊂[L,R][l,r]\subset[L,R][l,r]...原创 2019-06-30 22:29:59 · 240 阅读 · 0 评论