线段树
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
#164. 【清华集训2015】V
DescriptionPicks博士观察完金星凌日后,设计了一个复杂的电阻器。为了简化题目,题目中的常数与现实世界有所不同。这个电阻器内有编号为 1∼n1∼n 的 nn 个独立水箱,水箱呈圆柱形,底面积为 1 m21 m2,每个水箱在顶部和底部各有一个阀门,可以让水以 1 m3/s1 m3/s 的流量通过,每个水箱的上阀门接水龙头,可以无限供应水,下阀门不接东西,可以让水流出。水箱顶部和底部都有一个原创 2017-12-07 15:52:35 · 993 阅读 · 1 评论 -
BZOJ 3638 k-Maximum Subsequence Sum
Description给一列数,要求支持操作: 1.修改某个数的值 2.读入l,r,k,询问在[l,r]内选不相交的不超过k个子段,最大的和是多少。Solution怎么做可以用最大费用最大流做把一个点i拆成两个点i1,i2,i1向i2连一个容量为1,费用为a[i]的边;然后i2向(i+1)1连一条容量为1,费用为0的边,然后其他的建边很明显。我们每次流完,为了防止再流一遍,把流过的边权取反,原创 2016-03-24 12:43:32 · 822 阅读 · 0 评论 -
【NOIP2014八校联考第4场第2试10.20】乐曲创作
Description小可可是音乐学院的一名学生,他需要经常创作乐曲完成老师布置的作业。 可是,小可可是一个懒惰的学生。所以,每次完成作业时,他不会重新创作一首新的乐曲,而是去修改上一次创作过的乐曲作为作业交给老师。小可可的乐曲由N个音调不同的音符组成,分别记为音符1…N。因此,他创作的乐曲是由1…N的一个排列构成,例如N=5时,他创作的乐曲可能为:2,1,3,5,4。但是,小可可每一次会按照一定原创 2017-01-18 21:05:27 · 1264 阅读 · 0 评论 -
【NOIP2014八校联考第2场第2试9.28】分组(group)
DescriptionBsny所在的精灵社区有n个居民,每个居民有一定的地位和年龄,ri表示第i个人的地位,ai表示第i个人的年龄。 最近社区里要举行活动,要求几个人分成一个小组,小组中必须要有一个队长,要成为队长有这样的条件: 1、队长在小组中的地位应该是最高的(可以并列第一); 2、小组中其他成员的年龄和队长的年龄差距不能超过K。 有些人想和自己亲密的人组在同一个小组,同时希望所在的小组原创 2017-01-14 22:16:07 · 1063 阅读 · 0 评论 -
JZOJ 3824【NOIP2014模拟9.9】渴
Description世界干涸,Zyh认为这个世界的人们离不开水,于是身为神的他要将他掌控的仅仅两个水源地放置在某两个不同的城市。这个世界的城市因为荒芜,他们仅仅保留了必要的道路,也就是说对于任意两个城市有且仅有一条可行的道路。更简单的,城市形成了一棵树。 Zyh要将这两个水源放在两个不同的城市。饥渴的人们会选择一个离他们最近的水源,并向其走去。每个城市的人的速度都是相同的,并且两个相邻(有边直接原创 2017-01-14 21:38:11 · 1185 阅读 · 0 评论 -
【51Nod 1463】找朋友
Description给定: 两个长度为n的数列A 、B 一个有m个元素的集合K 询问Q次 每次询问[l,r],输出区间内满足|Bi-Bj|∈K 的最大Ai+Aj数据约定: n,Q<=100000 m <= 10 0<=A[i]<=1000000000 1<=B[i]<=n 1<=K[i]<=n 保证B[i]互不相等Solution这是一道需要认真看题的题目。 因为要询问[l,原创 2016-12-22 15:56:14 · 937 阅读 · 0 评论 -
【NOIP2016提高组复赛】天天爱跑步
DescriptionSolution这道题是NOIP里面最难的一道题。 暴力打的好可以拿80分,比赛的时候还是打暴力比较好。 我们思考一下从x到y的路径,这个可以拆成从x到lca的路径和从lca到y的路径,这个很明显。 如果一个点i在从x到lca 的路径可以检测到的话,那么就有deep[i]+w[i]=deep[x]deep[i]+w[i]=deep[x]。 如果一个点i原创 2016-11-28 22:42:13 · 7667 阅读 · 0 评论 -
【NOIP模拟】成绩调研
DescriptionSolution这题明明是道水题,但是却不小心打错了。 做法大致是每次搜到一个i,对于每个等级k,都找一个[x,y]满足[x~y,i]是合法的,然后用线段树求一下区间的交集就好了。 每次多找到一个a[i]是,左右区间本来都要向右移动的(如果已经有的话),但是我的右区间移动了,左区间却没有移动,而且我并没有考虑l=0的情况,以后要注意点啊,思维一定要谨慎。Code#inclu原创 2016-09-29 17:32:11 · 523 阅读 · 0 评论 -
【hdu5283】火神的鱼
Description火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼。池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形。 池塘里的鱼不停地在水中游动,可以看成一些点。有的时候会有鱼游进渔网,有的时候也会有鱼游出渔网。所以火神不知道什么时候收网才可以抓住最多的鱼,现在他寻求你的帮助。 他对池塘里的每条鱼都给予了一个标号,分别从1到n标号,n表示池塘里鱼的总数。鱼的游动可原创 2016-08-14 20:42:55 · 850 阅读 · 0 评论 -
【NOIP模拟】被粉碎的线段树
DescriptionSolution不会做啊!打了个贪心,没有加倍增,然后在打了几个特殊情况拿了85分。 其实答案有一个性质:区间的定位个数=2*区间的长度-完全被包含的区间个数,比如说[2,7]的答案=(7-2+1)*2-9=3,包含的区间([2,2],[3,3],[4,4],[5,5],[2,3],[5,7],[6,7],[6,6],[7,7])。 好神奇啊! 为什么NIE?(感觉我原创 2016-09-03 20:20:14 · 641 阅读 · 0 评论 -
【NOIP模拟】树塔狂想曲
Description相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和。走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1)。如下图是一个数塔,映射到该数塔上行走的规则为:从左上角的点开始,向下走或向右下走直到最底层结束。 1 3 8 2 5 0 1 4 3 8 1 4 2 5 0 路径最大和是1+8+5+4+4 =原创 2016-09-03 19:55:56 · 959 阅读 · 0 评论 -
【NOI2017模拟.4.1】Shoes【DP决策单调性,主席树,分治】
DescriptionData ConstraintSolution动态规划如果只有一个鞋柜,那么真的是相当的简单,直接找个中位数就可以了,但是有多个鞋柜该怎么办? 还有一个很显然的性质,就是鞋柜肯定是放在鞋子上的,就是现在放鞋柜的点缩小为2n。 我们的鞋柜肯定是越靠近两个鞋子的中点越优,所以把鞋子按中点排序 那我们考虑可不可以从k-1个鞋柜推到k个鞋柜。 很明显,可以设一个DP: f[i原创 2017-04-07 14:54:49 · 929 阅读 · 0 评论 -
【51Nod1462】树据结构
Description给一颗以1为根的树。 每个点有两个权值:vi, ti,一开始全部是零。 Q次操作: 读入o, u, d o = 1 对u到根上所有点的vi += d o = 2 对u到根上所有点的ti += vi * d 最后,输出每个点的ti值(n, Q <= 100000) 有50%的数据N,Q <= 10000 注:所有数64位整数不会爆。Solution这道题目离线很原创 2017-03-14 22:42:48 · 793 阅读 · 0 评论 -
【NOIP2017提高A组集训10.28】序列操作
Description一开始有n个非负整数hi,接下来会进行m次操作,第i次操作给出一个数c[i],要求你选出c[i]个大于零的数并将它们减去1。 问最多可以进行多少轮操作后无法操作(即没有c[i]个大于零的数)Solution这题数据范围出的很迷,log^2竟然都能过 很显然我们只用给前k大的数减一,然后我们考虑一段数减完之后相对顺序会怎么变,我们可以发现只有序列末尾相等的那一段会移到那一段的原创 2017-10-31 08:02:28 · 553 阅读 · 0 评论 -
【JZOJ5295】【清华集训模拟】Create(主席树)
DescriptionSolution这题的40分非常的好打,直接倒着主席树一下就好了。 其实100分也差不多,只是要发现一些东西。 因为估价函数们是不会变化的,所以我们可以考虑用一个数据结构。 我们对于每个数a,只有大于估价函数的x才是有贡献的,我们可以考虑排序一下x,然后对于每个a找到最大的x小于等于a,然后统计这些区间有多少个覆盖a这个位置,这个可以用主席树来搞。 但是我们对于一段相同原创 2017-08-23 21:57:50 · 419 阅读 · 0 评论 -
【JZOJ5270】【GDOI2018模拟】神奇的矩阵(二维线段树)
DescriptionSolution这题直接三方log只有70分,想要打的更好只能打平方log方的,那么很显然就是用一个二维的数据结构来维护。 这还是我第一次打二维线段树(不是线段树套线段树) 首先我们对于绝对值可以考虑小的数被贡献多少次,那么就是找大的数的和-小的数的出现次数,那么我们就可以考虑把所有的数从小到大排序然后依次插入。 然后每个点上统计一个以它为左上角的矩阵可以被贡献多少次,那原创 2017-08-23 07:49:12 · 714 阅读 · 0 评论 -
JZOJ 5232【NOIP2017模拟】带权排序(概率,线段树)
DescriptionSolution我们知道要求的是∑si∗E(pi)\sum si*E(pi),那么我们的目的就是对于每个数求出它的期望排名。一个数排名的期望就是对于前面的数小于等于它的期望和后面的数小于它的期望(题目还有一个要求ai=aj时piCode#include<iostream>#include<stdio.h>#include<string.h>#include<algorit原创 2017-08-09 09:16:08 · 632 阅读 · 0 评论 -
JZOJ5222【GDOI2018模拟7.12】A(线段树&&二维偏序)
DescriptionSolution逆序对!不管什么,先打一个树状数组再说。 我们先考虑一下在o点操作的影响。 对于o影响(对于o向后的逆序对)的x满足 a[x]<=a[o]且x>=oa[x]<=a[o]且x>=o 这个二维偏序 然后,在线的搞,好像很难用数据结构维护。 那么,用离线搞这个是一个很经典的问题。 首先,我们对下标从小到大排一次序。 为什么要从小到大呢?我们可以发现,如原创 2017-07-14 21:47:21 · 566 阅读 · 0 评论 -
【GDOI2018模拟7.9】相逢是问候
DescriptionSolution首先我们要知道一个叫做扩展欧拉定理的东西: cxmodp≡cxmodφ(p)+φ(p)∗[x>=φ(p)]modpc^x\mod p≡{c^{x\mod \varphi(p)+\varphi(p)*[x>=\varphi(p)]}}\mod p 如果我们要求ccxc^{c^x} 那么就是 ccxmodp≡ccxmodφ(p)+φ(p)∗[x>=φ(p)]原创 2017-07-10 20:20:56 · 546 阅读 · 0 评论 -
【GDOI2017第二轮模拟day1】公路建设
Description在Byteland一共有n 个城市,编号依次为1 到n,它们之间计划修建m条双向道路,其中修建第i 条道路的费用为ci。 Byteasar作为Byteland 公路建设项目的总工程师,他决定选定一个区间[l, r],仅使用编号在该区间内的道路。他希望选择一些道路去修建,使得连通块的个数尽量少,同时,他不喜欢修建多余的道路,因此每个连通块都可以看成一棵树的结构。 为了选出最佳原创 2017-04-16 09:32:48 · 733 阅读 · 0 评论 -
【GDSOI2017模拟4.13】采蘑菇(点剖||线段树)
DescriptionA君住在魔法森林里,魔法森林可以看做一棵n个结点的树,结点从1~n编号。树中的每个结点上都生长着蘑菇。蘑菇有许多不同的种类,但同一个结点上的蘑菇都是同一种类,更具体地,i号结点上生长着种类为c[i]的蘑菇。 现在A君打算出去采蘑菇,但他并不知道哪里的蘑菇更好,因此他选定起点s后会等概率随机选择树中的某个结点t作为终点,之后从s沿着(s,t)间的最短路径走到t.并且A君会采摘途原创 2017-04-16 09:30:05 · 805 阅读 · 0 评论 -
【GDOI2017模拟一试4.11】腐女的生日(线段树+维护一次函数)
Description腐女要过生日了,pty 想给腐女送礼物,但是腐女所在的教室离pty 的教室太远了,于是pty就拜托会动归和A星的djy帮忙送礼物。djy在学校建立了一个平面直角坐标系,他站在了(0,0)点,腐女在(x0,y0)点,djy每次只能往上下左右四个方向移动一步,中间有n栋矩形教学楼,每个教学楼给出两个对角的坐标,并且保证每栋教学楼的周围区域(如图所示)不会有别的教学楼,即djy可以绕原创 2017-04-16 08:54:58 · 1003 阅读 · 0 评论 -
【NOI2017模拟4.2】查询【线段树】
Description给出若干条线段,用(x1,y1),(x2,y2)表示其两端点坐标,现在要求支持两种操作: 0 x1 y1 x2 y2 表示加入一条新的线段,(x1,y1)-(x2,y2) 1 x0 询问所有线段中,x坐标在x0处的最高点的y坐标是什么,如果对应位置没有线段,则输出0。Solution这题一看就是用线段树做的。但是问题就是怎么维护。 很明显我们要在区间维护一条直线。原创 2017-04-06 20:58:11 · 607 阅读 · 0 评论 -
【NOIP提高】自然数
DescriptionSolutionmex是清华夏令营的题目,这道NOIP的题绝对比那道题难。用50分预处理一个东西设b[i]=mex(1,i)。 先用50分求出b数组。推广我们试着把mex(1,i)推到mex(2,i)。 那么我们需要删掉a[1]这个值。 假设右边第一个等于a[1]的位置是rr[1]。 我们考虑一下有影响的区间,假如第一个等于a[1]的位置是x(就是a[1]=a[x]),原创 2016-08-11 17:33:33 · 550 阅读 · 0 评论 -
【NOIP提高模拟】奇洛金卡达
Description阿良良木历将要迎来人生(不,是吸血鬼生涯)的第三次战斗——与身为人类的奇洛金卡达在直江津高中的操场solo,以取回Heartunderblade的左右手。 奇洛金卡达。留着刺猬头、外形像神父的男子。靠着自身信仰,来消灭吸血鬼的砖家。奇洛金卡达还是某个新兴宗教的大主教,那个宗教的教义,否定了怪异的存在。 呐,在战斗之前,我们来研究一下那个新兴宗教的教义吧。教义被某种方式加密成原创 2016-09-01 15:32:25 · 1148 阅读 · 0 评论 -
【GDOI模拟】奇妙的数列
DescriptionSolution题意就是要求最长的一段区间,中间的最小值不比左端点小,中间的最大值不比右端点大。第一眼可以用线段树维护最大值和最小值。 时间复杂度O(n(logn)2)O(n(log n)^2)第二眼就想到O(n)对于i来说因为只用找右边第一个比a[i]小的数,和左边第一个比a[i]大的数,就可以了。 维护这两个值O(n)用f和g数组预处理一下就好了。 f[i]表示右边第原创 2016-04-10 00:08:56 · 620 阅读 · 0 评论 -
【NOIP模拟】有趣的有趣的家庭菜园
Description职业经营家庭菜园的JOI君每年在自家的田地中种植一种叫做IOI草的植物。IOI草的种子在冬天被播下,春天会发芽并生长至一个固定的高度。到了秋天,一些IOI草会结出美丽的果实,并被收获,其他的IOI草则会在冬天枯萎。 JOI君的田地沿东西方向被划分为N个区域,从西侧开始的第i个区域中种植着IOI草i。在第i个区域种植的IOI草,在春天的时候高度会生长至Hi,此后便不再生长。如果原创 2016-04-08 19:12:35 · 1284 阅读 · 0 评论 -
GDKOI总结
GDKOI总结Day 1:Problem 1要维护所有连续子段xor的和,支持修改,很明显是线段树。我开始打了棵维护连续xor的线段树a1和维护a1的线段树a2,由于打的十分暴力,交上去只有30分。用十棵线段树来维护每一位的0和1的个数就能100。比赛是没想到,打只有30分的方法浪费了很多时间。Problem 2这道题用全排列暴力只有20分。原创 2016-02-23 18:54:11 · 1275 阅读 · 0 评论 -
【GDKOI2016】项链Code&Details
Details首先,我们得出了结论,两个回文串相交才符合条件,在总结上已经说了。 然后假设当前这位枚举到一个回文串的中心i,那么再找另一个会问串中心满足两个条件:1、i-p[i]<=j+p[j](两个回文串相交);2、i-j<=n(两个回文串中心的距离不得超过原串的长度,否则可能不合法) 那么我们把所有的i+p[i]放进一个线段树中。维护max。 然后枚举字符串中心i,在max(1,i-n)到原创 2016-03-04 22:02:39 · 781 阅读 · 0 评论 -
【GDKOI2016】魔卡少女Code&&Details
Details判断x的2进制当前第i位是1还是0,x&(1<< i) 我们要维护这段区间l[2],r[2],sum[2],zong l[1]表示,这段区间左端点是最左边且不挨着右端点的子序段异或后,当前二进制这一位为1的个数 l[0]表示,这段区间左端点是最左边且不挨着右端点的子序段异或后,当前二进制这一位为0的个数 r[1]表示,这段区间右端点是最右边且不挨着左端点的子序段异或后,当前二进原创 2016-03-04 18:52:59 · 1224 阅读 · 0 评论 -
树链剖分学习小记
树链剖分学习小记 平常在一棵树上,从点u到点v询问一些最大值,求和之类的,都是先打个lca然后在类暴力一下,小题可以对,但遇到大题就挂了。然后就去看了一下树链剖分%%% 其实也不难。。。 树链剖分其实就是用数据结构去维护上面的点或链,降低一下复杂度。不过如果随意的去维护,会搞得很乱,时间消耗可能比暴搜还慢。 现在有一种剖分的方法:轻重链剖分(启发式剖分)。 从原创 2016-02-04 10:32:28 · 1234 阅读 · 0 评论 -
【NOIP模拟】我的天
Description很久很以前,有一个古老的村庄——xiba村,村子里生活着n+1个村民,但由于历届村长恐怖而且黑暗的魔法统治下,村民们各自过着独立的生活,完全没有意识到其他n个人的存在。 但有一天,村民xiba臻无意中也得到了魔法,并发现了这个恐怖的事实。为了反抗村长,他走遍了全世界,找到了其他n个村民,并组织他们发动革命。但让这n个素不相识的村民(xiba臻已跟他们认识)同心协力去抵抗村长是原创 2016-04-02 18:29:52 · 855 阅读 · 0 评论 -
【清华集训2014】mex
Description有一个长度为n的数组{a1,a2,…,an}。m次询问,每次询问一个区间内最小没有出现过的自然数。Solution一眼看过去,很明显就是数据结构。 不过,用什么?怎么维护? 是个问题?用什么哎呀,发现很难找到一个可以在线的数据结构去维护。那么离线呢,好像离线可以。以下标线段树为节点的线段树,无法判重值,好像不能维护权值,想到不能维护权值,那么就有很多数据结构不能用了,维原创 2016-03-09 19:59:03 · 1287 阅读 · 1 评论 -
魔道研究
Description“我希望能使用更多的魔法。不对,是预定能使用啦。最终我要被大家称呼为大魔法使。为此我决定不惜一切努力。” ——《The Grimoire of Marisa》雾雨魔理沙 魔理沙一如既往地去帕秋莉的大图书馆去借魔导书(Grimoire) 来学习魔道。 最开始的时候,魔理沙只是一本一本地进行研究。然而在符卡战中,魔理沙还是战不过帕秋莉。 好在魔理沙对自己的借还和研究结果进行原创 2016-03-07 21:46:43 · 662 阅读 · 0 评论 -
【NOIP2012提高组】开车旅行
Description现在有n个城市,每个城市有它的高度Hi,保证每个Hi互不相同。我们定义两个城市之间的距离dis(i,j)=|Hi−Hj|dis(i,j)=|Hi−Hj|,并且只能从编号小的城市去到编号大的城市。现在有两个人,小A和小B要开车(雾)去旅行。小A先开一天,小B再开一天。每一天都可以从一个开到另一个城市。小A会选择去离当前城市第二近的城市,小B会选择去离当前城市最近的那个城市。如果他原创 2016-03-18 18:58:44 · 1494 阅读 · 0 评论 -
【集训队互测 2012】Middle
Description一个长度为 n 的序列 a ,设其排过序之后为 b ,其中位数定义为 b[n/2] ,其中 a,b 从 0 开始标号 , 除法取下整。 给你一个长度为 n 的序列 s 。回答 Q 个这样的询问 : s 的左端点在 [a,b] 之间 , 右端点在 [c,d] 之间的子序列中 ,最大的中位数。 其中 aSolution怎么做一看到什么中位数,k小数,数据范围又不大,那么就可以二原创 2016-04-15 20:07:53 · 1138 阅读 · 0 评论 -
【GDOI模拟】数树数
Description给定一棵N 个节点的树,标号从1~N。每个点有一个权值。要求维护两种操作: 1. C i x(0<=x<2^31) 表示将i 点权值变为x 2. Q i j x(0<=x<2^31) 表示询问i 到j 的路径上有多少个值为x 的节点Solution这是一道很裸的树链剖分的题目,有一道题很这题极其类似【SDOI2014】旅行 不过多了一些操作而已。用动态开空间的方法这种方法又原创 2016-04-02 23:42:20 · 1239 阅读 · 0 评论 -
【GDOI 2016】第四题 疯狂动物城
DescriptionSolution题目好长,一看就烦操作1:1,x,y,z把x到y的点权值加z。 操作2:2,x,y把x到y的点一次放进一个数组a里面,统计答案ans=∑ni=1a[i]∗∑n−ij=1ans=\sum_{i=1}^na[i]*\sum_{j=1}^{n-i}。 操作3:3,x所有点的状态回到第x次修改后的。码农题啊!!!害人啊!!!不过知道是码农题,在比赛的最后30分钟,竟原创 2016-08-06 21:46:56 · 1672 阅读 · 0 评论 -
【Cqoi2011】【BZOJ3295】动态逆序对
Description对于序列A,它的逆序对数定义为满足iSolution树状数组一看到逆序对就要想到树状数组。 维护每个数前面到目前有多少个比自己大。动态的思路因为要动态维护,每次只删掉一个数在逆序对中的贡献:及每个数前面有多少个比自己大,每个数后面有多少数比自己小。 先预处理出每个数前面有多少个比自己大ll[i],每个数后面有多少个数比自己小rr[i]。 很显然每次只用总答案删掉位置为i的原创 2016-07-29 10:25:03 · 967 阅读 · 0 评论 -
【JZOJ4587】Snow的追寻
DescriptionSolution一道很裸的题目,51Nod上有一个加强版的叫树中最远点对。思路有对子树限制的就想一想dfs序。然后在dfs序上建一个线段树每个点存储它表示的点集的最长距离和对应的两个点,合并的时候有六种情况,两个子树的两个点两两配对,然后再与这两个点的值比较,一共六种。 最后查询的时候,限制的两棵子树在dfs序上,分成了三个区间,这三个区间分别询问就好了。Code#inclu原创 2016-07-08 08:06:09 · 752 阅读 · 0 评论