【数据结构】线段树
文章平均质量分 68
mysterynoip
蒟蒻OIer
展开
-
bzoj 1396 识别子串 & bzoj2865 字符串识别 后缀数组+线段树
题面题目传送门双倍经验传送门解法解法全靠yy……显然我们可以先构造出后缀数组。我们令len[i]=max(height[rnk[i]],height[rnk[i]+1])len[i]=max(height[rnk[i]],height[rnk[i]+1])len[i]=max(height[rnk[i]],height[rnk[i]+1]),表示从iii开始长度超过len[i]len[...原创 2018-11-21 21:25:37 · 304 阅读 · 0 评论 -
bzoj 4653 [Noi2016]区间 线段树
题面题目传送门解法显然,我们只要选出若干个区间,使得某一个位置被至少覆盖了mmm次就可以了考虑将这nnn个区间按照长度从大到小排序,在选择区间的时候显然是选择连续的一段,即使中间某一个区间可能并没有什么用处,但是至少不会使答案变得更劣。那么我们枚举最左边选取的是哪一个区间,然后扫到下一个正好使得所有数出现次数最多的那个出现了不少于mmm次,然后更新答案。类似于two-pointers...原创 2018-11-07 22:05:24 · 123 阅读 · 0 评论 -
bzoj 4777 [Usaco2017 Open]Switch Grass 线段树+multiset
题面题目传送门解法因为我比较菜,离线的做法并不会……显然我们可以发现一个性质:不同颜色的最短距离一定是某一条边。然后我们可以发现,这些答案边一定在最小生成树上,且任意一棵最小生成树都满足。考虑这个为什么是正确的。假设存在一条不在最小生成树上的边(x,y,v)(x,y,v)(x,y,v)满足答案要求,那么同时也一定会与一条xxx到yyy且总长度不超过vvv的路径上存在某一条边满足条件,...原创 2018-11-06 22:13:01 · 176 阅读 · 0 评论 -
LOJ 2319「NOIP2017」列队 线段树
题面题目传送门解法想了好久才把这道题真正弄懂……可能还是我太菜了这道题做法比较多,这里讲一个线段树的做法考虑建出n+1n+1n+1棵线段树,前nnn棵线段树维护每一行的情况,最后一棵线段树维护最后一列的情况显然这些线段树一定要动态开点,否则空间肯定爆炸先口胡一下如何处理离队事件,假设在(x,y)(x,y)(x,y)的同学离队:如果y=my=my=m,即这个同学在最后一列,显然只...原创 2018-09-26 20:50:59 · 140 阅读 · 0 评论 -
bzoj 1941 [Sdoi2010]Hide and Seek 线段树/kd-tree
题面题目传送门解法可以考虑kd-tree,但是我并不会……对于每一个iii,我们就是要求max(∣x[i]−x[j]∣+∣y[i]−y[j]∣)max(|x[i]-x[j]|+|y[i]-y[j]|)max(∣x[i]−x[j]∣+∣y[i]−y[j]∣),minminmin类似考虑分444种情况,就是将绝对值拆开不妨只考虑x[j]≤x[i]x[j]≤x[i]x[j]≤x[i]且y[...原创 2018-09-20 20:40:23 · 114 阅读 · 0 评论 -
bzoj 1095 [ZJOI2007]Hide 捉迷藏 动态点分治+堆/线段树
题面题目传送门解法数据结构题……讲一下两种不同的思路吧,用括号序列怎么做我不会因为有修改并且有关于点之间距离的询问,所以我们考虑动态点分治首先建出点分树,然后每一个点开两个堆。“第一个堆记录子树中所有节点到父亲节点的距离,第二个堆记录所有子节点的堆顶,那么一个节点的堆2中的最大和次大加起来就是子树中经过这个节点的最长链。然后我们最后开一个全局的堆,记录所有堆2中最大值和次...原创 2018-09-15 16:41:55 · 191 阅读 · 0 评论 -
bzoj 1969 [Ahoi2005]LANE 航线规划 tarjan+树剖+线段树
题面题目传送门解法挺数据结构的一道题……显然,对于删边我们并不是那么容易处理,那么我们就不妨把操作离线下来,倒着进行加边的操作因为最后全部操作完之后保证图连通,那么我们可以对整张图按照边双缩点,然后整张图就显然地变成了一棵树询问有多少条边删去后能使x,yx,yx,y不连通,显然就是这棵树上x,yx,yx,y的路径长连接x,yx,yx,y这条边,可以发现就是把x,yx,y...原创 2018-09-05 20:19:16 · 210 阅读 · 0 评论 -
bzoj 4821 [Sdoi2017]相关分析 线段树
题面题目传送门解法文化课烂了之后回来写数据结构……首先,我们明显可以将分子和分母分开来算。对于分子,我们可以这样展开:∑(xiyi−xˉyi−yˉxi+xˉyˉ)=∑xiyi−xˉ∑yi\sum(x_iy_i-\bar xy_i-\bar yx_i+\bar x\bar y)=\sum x_iy_i-\bar x\sum y_i∑(xiyi−xˉyi−yˉxi+xˉyˉ)=...原创 2019-01-27 12:55:38 · 140 阅读 · 0 评论