![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
cervoliu
这个作者很懒,什么都没留下…
展开
-
JZOJ 4270 魔道研究
Description“我希望能使用更多的魔法。不对,是预定能使用啦。最终我要被大家称呼为大魔法使。为此我决定不惜一切努力。” ——《The Grimoire of Marisa》雾雨魔理沙 魔理沙一如既往地去帕秋莉的大图书馆去借魔导书(Grimoire) 来学习魔道。 最开始的时候,魔理沙只是一本一本地进行研究。然而在符卡战中,魔理沙还是战不过帕秋莉。 好在魔理沙对自己的借还和研究结果进行原创 2016-03-10 19:18:03 · 696 阅读 · 0 评论 -
【Codeforces 438 D】The Child and Sequence
Description长度为n的序列,支持单点修改区间mod x查询区间和1 ≤ n, m ≤ 10^5 序列,操作中的值<=10^9Analysis原创 2017-04-19 20:57:32 · 617 阅读 · 0 评论 -
【JZOJ 3397】 雨天的尾巴 线段树合并
Description一棵树,有若干操作,每个操作包含三个数x,y,z,表示在树上从x到y的路径上的所有点的z颜色的权值+1。所有操作结束后询问每个点权值最大的颜色是什么。对于100% 的数据,1 <= n,m <= 100000; 1 <= x, y <= n; 1 <= z <= 10^9Analysis这道题是用的线段覆盖的思想。只不过放在树上。 我们想树上的两个点u,v之间的路径可以由(原创 2016-05-24 19:14:41 · 508 阅读 · 0 评论 -
【GDOI 2017 day1】取石子游戏
Description给定一棵树,结点有权。对于每个点,求出 它的子树以外的所有点权值集合的mex 对于 20% 的数据:N ≤ 500, T ≤ 20 另外50% 的数据:N ≤ 100000, T ≤ 5 最后30% 的数据:N ≤ 1000000, T ≤ 170分比赛时只想到了这种题的经典套路——线段树合并/启发式合并 于是我去打了线段树合并,结果前7个点因为多组数据数组没清空WA,原创 2017-05-09 18:08:24 · 427 阅读 · 0 评论 -
【JZOJ 100019】A
Description n<=10^5Analysis比赛的时候没时间+没想到+暴力爆0 于是乎正解其实运用到了正难则反的思想 因为总共的不合法路径是nlogn的,可以转化为求出包含不合法路径的路径数 观察一条不合法路径,设其两个端点为A,B 设包括路径AB的路径两个端点为C,D 当A,B不是祖先关系时,C属于A的子树,D属于B的子树 当A,B是祖先关系时,设A为B的祖先 那么D属于原创 2017-06-26 22:33:31 · 366 阅读 · 0 评论 -
【GDKOI2015】【JZOJ 4005】树 括号序
Description AnalysisKD啊OJ上交不了这道题,我只好co标自己打拍验证程序了(面壁) 这题是GDKOI2015Day1最后一题 看数据范围,N<=50000,log^2好像能过,链剖? 因为只有10种颜色,所以开10棵线段树维护每种颜色链上的值 第一问子树内好恶心,线段树怎么维护 等一等,子树?想一想有什么东西可以把子树转化成连续一段序列? 17.7.11 upd原创 2017-01-04 20:51:58 · 1169 阅读 · 0 评论 -
【JZOJ 4238】纪念碑
Description给你一个大矩形空地,其中有很多小矩形障碍在里面(有重叠),让你在里面找一个最大的正方形的边长(里面不包含任何小矩形) 对于100%的数据,p<=400000,m,n<=1000000.Analysis经典的扫描线题目 一般一个坐标系里有些矩形,就考虑扫描线了 一条扫描线从左到右扫过去,中途会遇到矩形的左右边界 x轴上维护两个指针l,r,表示正方形的左右边界 对于正方形原创 2017-07-03 20:40:53 · 389 阅读 · 0 评论 -
【JZOJ 5049】 腐女的生日
Description腐女要过生日了,pty 想给腐女送礼物,但是腐女所在的教室离pty 的教室太远了,于是pty就拜托会动归和A星的djy帮忙送礼物。djy在学校建立了一个平面直角坐标系,他站在了(0,0)点,腐女在(x0,y0)点,djy每次只能往上下左右四个方向移动一步,中间有n栋矩形教学楼,每个教学楼给出两个对角的坐标,并且保证每栋教学楼的周围区域(如图所示)不会有别的教学楼,即djy可以绕原创 2017-07-06 09:52:24 · 403 阅读 · 0 评论 -
【JZOJ 5174】C
Description给你一张n个结点,m条边的无向图,每个结点都有一个整数权值。你需要执行一系列操作。操作分为三种,如下表所示。 操作 备注 D x (1<=x<=m) 删除编号为x的边。输入保证每条边至多被删除一次。 Q x k (1<=x<=n) 计算出结点x所在的联通块中,第k大的权值。如果不存在,输出0。 C x v (1<=x<=n) 把结点x的权值改为v。 操作序列的原创 2017-06-27 22:07:41 · 506 阅读 · 0 评论 -
【HEOI2013】Segment
Description要求在平面直角坐标系下维护两个操作:在平面上加入一条线段。记第 i条被插入的线段标号为 i。给定一个数 k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号。对于 100% 的数据, 1 ≤ n ≤ 10^5, 1 ≤ k, x0, x1 ≤ 39989, 1 ≤ y0 ≤ y1 ≤ 10^9。线段树Get到线段树新姿势,听说叫超哥线段树(:з)∠) 线段一原创 2017-07-06 11:22:36 · 363 阅读 · 0 评论 -
【JZOJ 5231】 序列问题
Description 对于100%的数据,n<=500000,0<=A[i]<=10^9线段树比赛时想到的辣鸡方法 枚举区间右端点r,更新将[i,r-1]的答案更新为[i,r]的答案 该点会更新连续向左一段,一直到某个位置pos,已经出现比该点大,比该点小的点 那么1~pos-1答案不变 于是可以用线段树来维护区间[i,r]的最值与答案,代码繁琐,O(nlogn)分治就像往常一样从中间分原创 2017-08-05 19:49:23 · 409 阅读 · 0 评论 -
【AtCoder Grand Contest 001 F】【JZOJ 5405】 Permutation
Description你有一个长度为n 的排列P 与一个正整数K 你可以进行如下操作若干次使得排列的字典序尽量小 对于两个满足|i-j|>=K 且|Pi-Pj| = 1 的下标i 与j,交换Pi 与Pj 对于100% 的数据满足n <= 500000AnalysisCode#include<set>#include<cstdio>#include<cstring>#include<alg原创 2017-10-11 22:09:27 · 509 阅读 · 0 评论 -
【线段树维护单调栈】【JZOJ 5402】 God Knows
Description DP左边->上边,右边->下边(题目反人类) 设f[i]表示上边最后一个匹配是(i,pi),需要找到一个j < i,且j能转移i,且f[j]尽量小 直接暴力n^2就有60分了100%DP优化把决策画出来(在平面图上,x轴为i,y轴为pi),观察哪些 j 能转移到 i 首先pj>pi的 j 可以忽略了 对于剩下的,发现只有从左到右一个单调递减的栈里的 j 才能转移到原创 2017-10-12 21:05:18 · 1115 阅读 · 0 评论 -
【口胡】【坑:对偶问题】【Codeforces 671D】【JZOJ 5369】 幽雅的绽放吧,墨染之樱
Description给定一颗N个节点的树,现在有M个工人,每个工人有三个属性ui,vi,Ci,表示这名工人可以维修节点ui到节点vi的所有路径,花费为Ci,并且保证vi是ui的祖先(祖先后代链)。问最少花费多少使得树上的每条边都有人维修。 N,M≤300000 Ci≤10^9Analysis设f[i]表示做完i的子树及i向其父亲的边,所需最小代价 考虑一条祖先后代链的贡献,链顶为x,链底为原创 2017-10-31 22:31:05 · 373 阅读 · 0 评论 -
【Code+ Round 1 div 1】Yazid的新生舞会
Description给定一个长度为n的序列,求有多少个区间满足区间内众数的出现次数严格大于区间长度的一半 n<=500000,0<=ai<=n-1当所有数的出现次数<=15时不难发现,此时满足条件的区间长度也很小(<=30),可以直接暴力当max(ai)<=7时考虑分别枚举0~7作为区间众数的贡献,显然贡献不会有重复 将所有等于kk的位置取为11,不等于kk的位置取为−1-1,得到新序列BB并原创 2017-11-27 20:59:26 · 371 阅读 · 0 评论 -
【bzoj 4771】 七彩树
Description给定一棵树,有n个点,点有颜色,颜色范围[1,n]。 现有m个询问,形如x d 表示询问点x子树内与x深度差不超过d的点集中,不同的颜色种类数 强制在线 要求做到nlogn 1<=n<=100000 1<=m<=100000离线离线的话方法很多,其中一种是线段树合并。 开一棵线段树,下标是颜色,若该颜色出现过,那么值是最浅深度 再开一棵线段树,下表是深度,值是子树原创 2017-12-15 21:54:00 · 639 阅读 · 0 评论 -
【UOJ #228】 基础数据结构练习题
Description给出一个长度为 nn 的数列 A,接下来有 m 次操作,操作有三种:对于所有的 i∈[l,r],将 Ai 变成 Ai+x。 对于所有的 i∈[l,r],将 Ai 变成 ⌊√Ai⌋。 对于所有的 i∈[l,r],询问 Ai 的和。 n,m,Ai,x<=10^5小清新线段树感性上看,值相同的一段会越来越长 如果整个区间开根下整全部相等,我就可以相当成一个区间覆盖操作 这样原创 2017-04-19 20:47:54 · 564 阅读 · 0 评论 -
【JZOJ 3873】 乐曲创作
Description给出1~N的一个排列,求出一个排列使得其逆序对数等于原排列的逆序对数,且字典序比满足原序列大之下,使字典序尽量小 100%的数据,1≤N≤500000。Analysis这就是一道大构造+贪心1.找出第一个需要改变的位置pos该位置(设为pos)需要满足两个约束条件其右边有比他大的数其右边比他小的数的个数设为b,序列[pos+1,n]的逆序对数为a,则b+1<=a尽量靠右原创 2017-01-19 21:54:39 · 469 阅读 · 0 评论 -
【JZOJ 3854】 分组
DescriptionBsny所在的精灵社区有n个居民,每个居民有一定的地位和年龄,ri表示第i个人的地位,ai表示第i个人的年龄。 最近社区里要举行活动,要求几个人分成一个小组,小组中必须要有一个队长,要成为队长有这样的条件: 1、队长在小组中的地位应该是最高的(可以并列第一); 2、小组中其他成员的年龄和队长的年龄差距不能超过K。 有些人想和自己亲密的人组在同一个小组,同时希望所在的小组原创 2017-01-17 22:24:41 · 372 阅读 · 0 评论 -
JZOJ 4296【NOIP2015模拟11.2】有趣的有趣的家庭菜园
Description职业经营家庭菜园的JOI君每年在自家的田地中种植一种叫做IOI草的植物。IOI草的种子在冬天被播下,春天会发芽并生长至一个固定的高度。到了秋天,一些IOI草会结出美丽的果实,并被收获,其他的IOI草则会在冬天枯萎。 JOI君的田地沿东西方向被划分为N个区域,从西侧开始的第i个区域中种植着IOI草i。在第i个区域种植的IOI草,在春天的时候高度会生长至Hi,此后便不再生长。如果原创 2016-04-08 20:02:32 · 636 阅读 · 0 评论 -
JZOJ 2256【ZJOI2008】树的统计
Description一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的原创 2016-04-29 11:27:02 · 550 阅读 · 0 评论 -
【JZOJ 3401】Pty爬山
Description坐标系里有N个点,保证他们的x坐标递增,它们互相连接形成一些连续的线段。每个点会想自己的位置能看到的最高点(能看到指视线不被其它线段遮住)原创 2016-05-22 10:32:12 · 549 阅读 · 0 评论 -
[SDOI 2014] [JZOJ 3625] 旅行
Description一棵树,每个节点有权值和颜色。询问有一下几种:询问从u到v的路径上与u相同颜色的节点的权值和(保证u与v颜色相同)询问从u到v的路径上与u相同颜色的节点的权值的MAX(保证u与v颜色相同)修改节点v的权值修改节点v的颜色Analysis若不考虑颜色,那么这就是一个裸的链剖(链剖裸题)。在线做法由于还没有搞出来,留坑待填。离线大法首先,我们要高呼:离线大法好!离线大法好原创 2016-05-11 19:08:35 · 544 阅读 · 0 评论 -
【TJOI & HEOI 2016】【JZOJ 4605】 【BZOJ 4552】排序
Description 序列长度为nn,排序次数为mm 100%1≤n,m≤100000100\%1\leq n,m\leq 100000 Time Limits:6000msTime\ Limits:6000msAnalysis此题做法极为机智。 二分出一个数。把>=这个数的数变为1,<这个数的数变为0 按顺序做一遍区间排序,排序直接用线段树区间修改。 升序就0在前1在后,反之则反。原创 2016-07-11 17:02:00 · 381 阅读 · 0 评论 -
【JZOJ 4587】 Snow的追寻
Description Analysis此题本人跑得最快,rank1了233 求出树的欧拉序。顺便用序弄出rmq快速求lca。 我们知道,一个节点在序中表示的是一段区间。而题目询问的是一些树的直径。 我们可以用线段树维护区间表示的节点内的直径,可是怎么合并?直径性质 两棵树用一条边合并,新树直径两端一定是原本两棵树直径四个端点中的两个。具体证明可以看crazy的课件。 所以,按上述方原创 2016-07-14 09:05:18 · 699 阅读 · 0 评论 -
【JZOJ 4606】 序列
Description Analysis记mx[i]为i位置上变化的MAX,mn[i]同理。 DP方程显然: f[i]=Maxj<i,mx[j]<a[i],a[j]<mn[i]f[j]+1f[i]=Max_{j<i,mx[j]<a[i],a[j]<mn[i]}f[j]+1 把后两个约束化成二维平面上的,然后树状数组套线段树。 注意动态开节点。 时间O(nlog22n)O(nlog_2^2原创 2016-07-14 10:42:04 · 386 阅读 · 0 评论 -
【JZOJ 4388】 染色
Description N≤105N\leq 10^5Analysis暴力竟然跑得极快极快,理论O(n2)O(n^2)的比O(nlog2n)O(nlog_2n)的快得多得多。。。 其实因为这里的NN只有10510^5,而我的暴力又是找过重心以后的,所以实际情况比O(n2)O(n^2)要小得多。 GDOI2015有一道题,也是N≤105N\leq 10^5,可是标程是O(n2)O(n^2)的,而原创 2016-06-16 21:25:33 · 841 阅读 · 0 评论 -
【JZOJ 4603】颜料大乱斗
Description **强烈吐槽坑人辣鸡题目区间可能左端点>右端点,白色的颜色用1表示!!!** 表示被坑啦!!!100分没啦!!!辣鸡出题人,颓我比赛,毁我人生!!!Analysis显然,可以用开30颗线段树来卡一卡。结果我就900ms+强行碾过了。Code#include<cstdio>#include<cstring>#include<algorithm>#define fo原创 2016-07-15 12:31:26 · 354 阅读 · 0 评论 -
【JZOJ 3463】 军训 training
DescriptionHYSBZ 开学了!今年HYSBZ 有n 个男生来上学,学号为1…n,每个学生都必须参加军训。在这种比较堕落的学校里,每个男生都会有Gi 个女朋友,而且每个人都会有一个欠扁值Hi。学校为了保证军训时教官不会因为学生们都是人生赢家或者是太欠扁而发生打架事故,所以要把学生们分班,并做出了如下要求: 1.分班必须按照学号顺序来,即不能在一个班上出现学号不连续的情况。 2.每个学生原创 2016-06-25 14:23:42 · 784 阅读 · 0 评论 -
【JZOJ 4638】 第三条跑道
Description (%%%WerkeyTom_FTD)Analysis首先,我们知道,φ(x)=∏kφ(pakk)\varphi(x)=\prod_k\varphi(p_k^{a_k}) 因为ai,x很小,所以可以把他们分解质因数。 600以内的质数只有109个,所以可以开109颗线段树,维护该质数在区间中的指数,乱搞一下。Code#include<cstdio>#include<原创 2016-07-17 12:05:15 · 478 阅读 · 0 评论 -
【JZOJ 4680】 自然数
Description n≤200000,ai≤109n\leq 200000,ai\leq 10^9Analysis首先可以o(n)求出mex(1,i)(1<=i<=n) 然后,考虑通过mex(1,i)求mex(2,i) 然后,问题变成若删除a[1],对后面造成什么影响。 首先如果后面有一个a[y]=a[1],显然a[y+1]~a[n]是不受影响的。 所以再1~y中,找到mex(1,i)原创 2016-08-11 21:07:40 · 378 阅读 · 0 评论 -
可修改区间k-th number
可修改区间k-th number的介绍不带修改的区间k-th number这个众所周知了。可以用主席树实现。 具体的话其实就是开nn棵权值线段树,动态开节点,由于每次增加一个点最多只会新建log2nlog_2n个点,所以空间复杂度为O(nlog2n)O(nlog_2n)。 我们在权值线段树上记录该范围数的出现次数,然后可以发现查询的两个区间端点的线段树信息可以相减,于是就可以线段树上二分了。原创 2016-07-18 10:21:59 · 576 阅读 · 0 评论 -
【HDU 5283】【JZOJ 4694】 火神的鱼
Description火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总数。鱼的游动可原创 2016-08-15 12:56:51 · 569 阅读 · 0 评论 -
【JSOI2015】【JZOJ 4064】套娃
Description Analysis显然对于Bi大的填越满越好 所以排个序 所以用一棵权值线段树记录一下选哪一个 这样贪心显然是对的Code#include<cstdio>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;typedef long long ll;const原创 2017-02-16 12:53:43 · 646 阅读 · 0 评论 -
【2-SAT】【优化连边】【AtCoder Regular Contest 069 F】Flag
DescriptionSnuke 喜欢旗子. Snuke 正在将N 个旗子摆在一条线上. 第i 个旗子可以被放在位置xi 或yi 上. Snuke 认为两个旗子间的最小距离越大越好. 请你求出最大值. 对于100% 的数据, 1 <= N <= 10^4,1 <= xi, yi <= 10^9.AnalysisCode分块优化连边+dfs染色#include<cmath>#include<原创 2017-11-03 20:52:06 · 699 阅读 · 0 评论