可持久化线段树
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
【集训队互测 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 · 1127 阅读 · 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 · 1654 阅读 · 0 评论 -
【Cqoi2011】【BZOJ3295】动态逆序对
Description对于序列A,它的逆序对数定义为满足iSolution树状数组一看到逆序对就要想到树状数组。 维护每个数前面到目前有多少个比自己大。动态的思路因为要动态维护,每次只删掉一个数在逆序对中的贡献:及每个数前面有多少个比自己大,每个数后面有多少数比自己小。 先预处理出每个数前面有多少个比自己大ll[i],每个数后面有多少个数比自己小rr[i]。 很显然每次只用总答案删掉位置为i的原创 2016-07-29 10:25:03 · 945 阅读 · 0 评论 -
【NOIP模拟】第三条跑道
DescriptionSolution一看到这种题就是数据结构。欧拉函数的公式看到求很多歌欧拉函数就要想到欧拉函数的公式。 φ(x)=x∗p1−1p1∗p2−1p2∗......∗pk−1pk\varphi(x)=x*{p_1-1\over p_1}*{p_2-1\over p_2}*......*{p_k-1\over p_k}用什么维护很明显的是600以内的质数的个数很少,只有110个左右。原创 2016-07-18 09:18:15 · 604 阅读 · 0 评论 -
【NOIP模拟】颜料大乱斗
DescriptionSolution开始看到前面的题目那么水,到这题时就开始胡思乱想了,待修改莫队?树套树?30棵线段树? 然后我打了30棵线段树,常数十分的大啊! 超时30分TAT。 然后旁边的人把30个颜色的值放到同一个节点上,然后就对了,????? 常数小而已嘛! 虽然两个方法的时间复杂度理论上是一样的。 其实就是每个节点存储30个颜色是否出现过,然后两个儿子向上合并就好了。Co原创 2016-07-18 08:58:17 · 819 阅读 · 0 评论 -
【ZJOI2013&&BZOJ3110】K大数查询
Description有n 个位置和m 个操作。操作有两种,每次操作如果是1 a b c 的形式,表示往第a 个位置到第b 个位置每个位置加入一个数c。如果操作形如2 a b c 的形式,表示询问从第a 个位置到第b 个位置,第c 大的数是多少。Solution树套树的模板题找矩阵中第k大的数,肯定是用权值线段树维护区间线段树啦! 在JZOJ跑的正常,BZOJ上怎么都过不了TAT。常数不好啊!毕竟原创 2016-07-14 11:41:52 · 1193 阅读 · 0 评论 -
【TJOI2016&&HEOI2016】字符串
DescriptionSolution比赛的时候没有时间打,其实这题并不难TAT后缀数组求一段LCP的最大值,明显可以用后缀数组解决。二分先找出c开头的后缀的rank(及rank[c])。 看到最大最小的这种东西,想一想二分。二分出前缀的最大长度mid。 可以发现在rank上,i与c的LCP就是min(height[i+1…c]),如果这个值RMQ所以把rank向前后扩展,找到符合这个要求的在r原创 2016-07-13 22:21:28 · 1168 阅读 · 0 评论 -
【SDOI2013】森林
Description小 Z有一片 森林 ,含有 N个节点, 每个 节点上都有一非负 整数作为 权值 。 初始的时候, 森林中有 M条边。 小 Z希望 执行 T个操作 ,操作有两类: 1、Q x y k 查询 点 x到点 y路径上 所有的 权值 中, 第 k小的权值是多少。 此 操作保证点 x和点 y连通,同时这两个节点的路径上至少有 k个点。 2、L x y 在点 x和点 y之间连接一条边。原创 2016-06-27 22:14:41 · 893 阅读 · 0 评论 -
JZOJ4444【HNOI模拟】a
Description给定一棵N 个节点的树, 每个点i 有权值a[i], 1<=a[i]<=m 有Q 个询问, 对于询问x,y,k, 分别输出树上从x 到y 的路径中, 权值小于/等于/大于k的点的数目Solution一道很裸的题目。用什么看看这道题要求的数据结构能做什么。 1、树上强制在线查询(树链剖分,lct,可持续化数据结构);2、权值范围询问(权值线段树) 没有修改啊! 省一省代码原创 2016-04-19 18:08:32 · 1132 阅读 · 0 评论 -
【SDOI2014】旅行
DescriptionSolution用什么很明显,这是一个树上操作,但是需要类似线段树的维护,一个很裸的树链剖分加线段树。怎么做因为有c个宗教,那么就开c棵线段树。然后就可以了。空间太大了我用了动态开空间,类似主席树那样打。在线大法好! 也可以打一个离散化。离线大法好!Code#include<iostream> #include<cstring> #include<cstdio> #inclu原创 2016-04-02 07:33:51 · 1261 阅读 · 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 · 1223 阅读 · 0 评论 -
【NOIP2014八校联考第2场第2试9.28】分组(group)
DescriptionBsny所在的精灵社区有n个居民,每个居民有一定的地位和年龄,ri表示第i个人的地位,ai表示第i个人的年龄。 最近社区里要举行活动,要求几个人分成一个小组,小组中必须要有一个队长,要成为队长有这样的条件: 1、队长在小组中的地位应该是最高的(可以并列第一); 2、小组中其他成员的年龄和队长的年龄差距不能超过K。 有些人想和自己亲密的人组在同一个小组,同时希望所在的小组原创 2017-01-14 22:16:07 · 1050 阅读 · 0 评论