
数据结构-线段树
文章平均质量分 73
lunch__
这个作者很懒,什么都没留下…
展开
-
#LOJ2555. 「CTSC2018」混合果汁 主席树
题面这个题跟CQOI2015CQOI2015CQOI2015任务查询系统是一样的查询区间前kkk大的权值和大概上板子就够了… 注意开longlonglonglonglong longCodes#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1...原创 2018-09-15 11:19:37 · 288 阅读 · 0 评论 -
[51nod 1766] 树上最远点对(线段树+树的直径)
题意多次询问一个点在[a,b][a, b][a,b], 另一个点在[c,d][c, d][c,d]内的树上最远距离有一个结论对于两个联通块S,TS, TS,T设d(S)d(S)d(S)表示联通块直径的两个端点那么d(S∪T)∈d(S)∪d(T)d(S∪T) ∈d(S)∪d(T)d(S∪T)∈d(S)∪d(T)这个东西仔细想下不是很难证然后我们用线段树维护就好了但是每次pushup...原创 2018-10-02 21:02:40 · 311 阅读 · 0 评论 -
[BZOJ4355] Play with sequence(线段树)
题意给你一个序列,有三种操作, 111是区间赋值,222是区间加法后区间取对000取maxmaxmax,333是询问区间内000的个数首先111操作可以转化为区间加上−inf-inf−inf后取maxmaxmax那么我们就只要维护区间加和区间取maxmaxmax操作了区间取maxmaxmax操作可以用吉司机线段树来实现这里有个比较重要的点就是加的−inf-inf−inf不能影响到区间...原创 2018-10-12 10:45:59 · 383 阅读 · 0 评论 -
[LOJ2019] 「AHOI / HNOI2017」影魔(离线+线段树)
题意每次询问一个区间的贡献,一个区间的贡献可以这样计算,每存在一个点对(i,j)(i,j)(i,j)满足ki,kjk_i,k_jki,kj分别为区间[i,j][i,j][i,j]的最大值和次大值就有p1p1p1贡献,满足(j−i>1(j-i>1(j−i>1且ki<maxx=i+1j−1<kjk_i<\max_{x...原创 2018-12-07 19:20:00 · 640 阅读 · 0 评论 -
[静态主席树]区间第k大
在学完一些前置技能后开始学主席树了owo 对于某一个序列[1, n]考虑对其每一个前缀[1, i]建立一棵权值线段树 则其值是可减的 直接建立线段树空间复杂度是O(n2log(n))O(n2log(n))O(n^2log(n))的, 无法承受 考虑每一个点的更改只会影响log(n)log(n)log(n)个点的权值 动态开点+利用一些相同信息就能开下了 模板 区间第k大#inclu...原创 2018-07-10 14:25:10 · 189 阅读 · 0 评论 -
树状数组套主席树[区间动态第k大]
经过我不断地调试(抄代码) 终于过了这个题目=-= 首先由主席树为什么不能维护动态第K大呢 因为静态主席树所有[1, i]的区间在询问前就已经确定了 如果修改了一个位置的值 那么后面所有的区间都要修改 时间复杂度就变成了O(n2logn)O(n2logn)O(n^2logn) 是无法接受的 考虑用更灵活的数据结构而不是数组来维护修改 既然是前缀和当然就选择树状数组(线段树可能也可...原创 2018-07-11 14:31:18 · 638 阅读 · 0 评论 -
CF981G 线段树 set
上次模拟赛还有一道题忘记发了…. 这个题还是有点难想 仔细读题 发现修改的每个区间只和修改的颜色有关 于是对于每一种颜色开一个set 存它尚未覆盖的区间 初始化每个颜色都包含[1,n][1,n][1, n]这个区间 每次修改的时候把整个区间×2×2×2 set中有相交的区间拆成[l,L][l,L][l, L]和[r,R][r,R][r, R]并×inv2×inv2×inv_2和+1+1...原创 2018-07-19 15:36:21 · 283 阅读 · 0 评论 -
[bzoj 4756][Usaco2017 Jan]Promotion Counting 线段树合并
今天考了雕哥的模拟赛才知道线段树合并这种东西… 从来没打过的我直接学了一发…mmp merge没return一直Re其实这个东西说起来也不难 大概就是动态开点的线段树 把信息合并起来就差不多了 当然这两棵线段树形态一点要相同 剩下的其实就差不多了#include<bits/stdc++.h>#define For(i, a, b) for(register int i =...原创 2018-08-01 19:41:55 · 149 阅读 · 0 评论 -
[bzoj2212]: [Poi2011]Tree Rotations 线段树合并
昨天状态特别差 看了题解这个题还是一点都不懂 后面自己冷静下来才想通 今天ymy的考试考的照样爆炸 滚粗感+=inf+=inf+=inf 好了现在来看这个题 题意大概是给你一个二叉树, 叶子节点有权值, 可以任意交换每个非叶子节点的左右子树, 最后求逆序对最少是多少发现线段树合并一般做的是这种树上的儿子对父亲有影响的一类题目 大概这个题目就满足这样的条件 我们可以发现一个性质, 那就...原创 2018-08-02 15:48:54 · 166 阅读 · 0 评论 -
[CSU-1913] 一条大笨龙送礼物 线段树 二分答案
今天考试的T3题目 好像也不是很难 但是蒟蒻的我就是想不到啊哎我也不知道出题人怎么想到的考虑二分答案 设当前二分的答案为midmidmid 则把序列中大于等于midmidmid的位置设为111, 其他位置设为000,放到一颗线段树上,那么111操作是让大的值在两边, 那么就可以转化为两端区间赋值为111,中间区间赋值为000,最后如果询问的位置kkk的答案为111表示当前答案可行,2操作看...原创 2018-08-04 17:59:42 · 172 阅读 · 0 评论 -
[SNOI 2017] 炸弹 loj2255 线段树优化建图 Tarjan求强联通分量
题目链接 这个题一开始一直很懵逼 不是很理解建图 手动模拟一下才发现这个建图的妙处首先我们把所有的点都放到线段树的叶子上 然后每个点对于它能炸到的logloglog个区间进行连边这样子一个强连通分量里的点一定是炸一个就能全炸的缩完点我们考虑用拓扑排序来进行dpdpdp我们发现如果vvv能被uuu引爆,那么uuu就能引爆vvv能引爆的节点,所以我们要建反图进行拓扑排序dpdpd...原创 2018-08-19 21:08:07 · 213 阅读 · 0 评论 -
#LOJ2319. 「NOIP2017」列队 线段树 动态开点
题目描述这个题有点excitingexcitingexciting啊 用vectorO(n)vectorO(n)vectorO(n)的eraseeraseerase竟然能过90pts90pts90pts首先我们可以把这个矩阵拆成n×(m−1)+1×nn×(m−1)+1×nn×(m - 1) + 1 × n 对于每一行的前m−1m−1m - 1个元素开一棵线段树 最后一列的元素单独开一棵...原创 2018-08-28 12:40:40 · 247 阅读 · 0 评论 -
[CF446C]DZY Loves Fibonacci Numbers——线段树+斐波那契数列
题目链接题意大概是维护一个支持区间加区间询问的数据结构,每次加一个斐波那契数列这个题还是很妙的…让我重新认识了一下斐波那契数列这个神奇的东西我们先来证明几个小性质1.fn=(∑n−2i=1fi)+f21.fn=(∑i=1n−2fi)+f21.f_n = (\sum_{i = 1}^{n - 2}f_i) + f_2证明:f3=f1+f2f3=f1+f2f_3 = f_1 +...原创 2018-08-24 20:36:14 · 585 阅读 · 0 评论 -
[UOJ164] 【清华集训2015】V(线段树)
题意给你一个序列,支持区间加上一个数,区间减去一个数,区间赋值,单点查询,单点历史最大值查询。题目链接题解首先发现三种操作可以转化为同样的形式,定义(x,y)(x,y)(x,y)为区间加上xxx后与yyy取max的标记,那么区间加就是(x,0)(x, 0)(x,0),区间减就是(−x,0)(-x, 0)(−x,0),区间赋值就是(−inf,x)(-inf,x)(−inf,x)...原创 2019-01-03 15:45:28 · 312 阅读 · 0 评论