线段树
文章平均质量分 69
616156
赛高______↑
展开
-
【数据结构】【线段树&并查集&栈】CF500E New Year Domino
题意:给出N个多米诺骨牌(均位于一条数轴上),每个骨牌有一个高度与坐标,现在有Q次询问, 每次询问给出L与RL与RL与R,现在推倒第LLL个骨牌,我们可以给某些骨牌临时增加高度(仅用于此次询问),每增加1高度,需要1的代价,现在要使第RRR个骨牌倒下,求最小的代价。分析:首先,我们有一个直观的想法:我们将每个骨牌延长,使得它倒下后能碰到它后面一个骨牌。 然而,有一种情况,使...原创 2018-03-01 18:09:31 · 265 阅读 · 0 评论 -
【线段树】【最小生成树】BZOJ5216 [Lydsy2017省队十连测]公路建设
分析:用线段树维护某个区间内的最优边(最多N条)所以复杂度就是O(N∗logM∗Q+MlogM)O(N*logM*Q+MlogM)O(N∗logM∗Q+MlogM)#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector&g...原创 2019-02-28 10:07:54 · 315 阅读 · 0 评论 -
【可持久化线段树】2019雅礼集训 permutation
题目:分析:比较恶心的一道题。首先,将式子转化一下,变成∑APi∗(n−i+1)\sum A_{P_i}*(n-i+1)∑APi∗(n−i+1)这里应该很好理解,无非就是把当前排列倒序,然后计算贡献而已。但是只有这么写才比较容易看出下一步的性质:显然,题目的最小值,必然是当PiP_iPi为升序时(否则可以通过交换一对来得到更小的答案)然后对某个排列,转移到任意其他排列,可...原创 2019-01-09 13:39:43 · 584 阅读 · 0 评论 -
【线段树】【DFN】2019雅礼集训 two
题意:分析:翻译一下题意:给出两个N个点的树,首先选择A树中的一条边删除,然后将所有包含此边的路径u-&amp;gt;v(要求u,v在B树中是相邻的),对应的B树中的边(u,v)删除。由于扯到了子树,显然可以考虑DFN的方法。很明显,路径包含关系在DFN中表示为:对于一条边(u,v),假设深度deepu=deepv+1deep_u=deep_v+1deepu=deepv+1那么所有包含此...原创 2019-01-09 08:36:52 · 316 阅读 · 0 评论 -
【线段树】【枚举】[Code+#3]寻找车位
分析:没见过这么暴力的数据结构题。其实方法很简单:首先,很容易想到一种暴力:枚举一行作为上边界,然后从左到右依次考虑每一列作右边界的情况:假设当前枚举的行为iii,列为jjj,每一列jjj从iii行开始,其下边的连续为1的最大长度为lenjlen_jlenj很容易发现,若对于第j列,其优的左边界k必然满足:lenk≥j−k+1len_k\geq j-k+1lenk≥j−k+1,否则的话...原创 2019-01-03 08:59:42 · 286 阅读 · 0 评论 -
【线段树】2019雅礼集训 sequence
题目:给出k,和一个长度为n的序列A有q次询问,每次询问Al,Al+1,Al+2……,ArA_l,A_{l+1},A_{l+2}……,A_{r}Al,Al+1,Al+2……,Ar中,有多少连续的子序列的&amp;\&amp;&只和为k的倍数。分析:比较水的线段树题。众所周知,与运算的前缀和最多只有logAilogA_ilogAi个值,所以可以预处理出...原创 2019-01-12 11:32:48 · 349 阅读 · 0 评论 -
【线段树】光线追踪
分析:其实是很水很水的线段树题!可以根据从原点到所有点按极角排序,然后分行/列线段数,分别维护纵/横坐标最小的覆盖线段。然后这题就变成了:区间覆盖,单点询问最大值问题。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<map&...原创 2019-01-04 22:07:21 · 330 阅读 · 0 评论 -
【线段树】「CodePlus 2018 3 月赛」白金元首与克劳德斯
题意:分析:题意好鬼扯。。。非常傻逼的线段树动态开点题。横向移动的矩形和纵向移动的矩形,看起来非常麻烦。由于速度均相等,所以可以以所有纵向移动的矩形为参考系,那么所有纵向移动的矩形都是相对静止的。而此时横向移动的矩形就变成了沿主对角线移动(左上至右下),那么就可以旋转坐标系,变成简单的线段覆盖问题了。即:把每个纵向移动的矩形视为(x+y,x+w+y+h)(x+y,x+w+y+h)(x...原创 2018-12-30 23:13:34 · 142 阅读 · 0 评论 -
【线段树】【数据结构】四校联考1024T3
题意分析:没过是因为没看。。。这题其实相当水。。。重新定义一下逆序对:每个点的贡献为,其后面的,比它小的数的个数。然后这样一来,每次排过序之后的点,其后面就不可能有比它小的值了,直接忽略以后排序又排到它的情况。#include<cstdio>#include<cstring>#include<algorithm>#include<ve...原创 2018-10-24 19:30:56 · 144 阅读 · 0 评论 -
【数据结构】【线段树】2018国庆三校联考D5T3
题意:分析:有一个显然的暴力方法:对每个询问,从左往右做一次,记录前缀和,当某个位置前缀和为负后,则删去当前点。再从右往左做一次。考虑使这个过程变得高效:可以将询问按左端点从右往左排序,然后用栈依次处理每个在从左往右考虑时是否需要删除。再利用线段树,求出没有删除的部分的最小后缀和,其相反数(和0取min)即为从右往左考虑时需要删除的个数。#include&lt;cstdio&gt...原创 2018-10-08 07:09:14 · 145 阅读 · 0 评论 -
【数据结构】【线段树】【字符串Hash】2018国庆三校联考D4T3
题意:分析:题解见标签(不过这题有非正解方法可以卡过去。。我代码附在下面)正解:#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<vector>#define SF scanf#define PF printf...原创 2018-10-07 19:38:54 · 144 阅读 · 0 评论 -
【贪心】【线段树】【数据结构】AGC011 Train Service Planning
分析:题意理解起来就很恶心的一道题。。。设A火车在每个站台等的时间为PiP_iPiB火车在每个站台等的时间为QiQ_iQi那么,如果两个火车在第x个轨道上不相交,那么就只需要满足:(∑i=0i≤xPi+∑i=0i≤x−1Ai,∑i=0i≤xPi+∑i=0i≤xAi)(\sum_{i=0}^{i\leq x}P_i+\sum_{i=0}^{i\leq x-1}A_i,\sum_{i=0...原创 2018-09-27 08:03:46 · 163 阅读 · 0 评论 -
【线段树】【数据结构】NOIP2017列队
分析:也是很简单的线段树水题。。。再次鄙视了一年前的自己。。。用n+1个线段树,每个位置为0/1表示那个位置的数是否存在。 其中前n个表示每一行(除了最后一个位置) 最后一个表示最后一列。然后可以用动态加点的方式避免TLE和MLE每次选中一个点,把他从所在行的线段树的位置改为0,然后在列线段树上的最后一个位置插入它。 然后询问道列线段树的中对应这次操作的那一行,把它改为0,并...原创 2018-09-15 11:11:22 · 279 阅读 · 0 评论 -
Codeforces483Div1 983D Arkady and Rectangles
题意:在一个平面上,依次放入N个颜色不同的矩形(可能会覆盖),现在求最终状态下能看到多少种不同温度颜色。注:空白部分也视为一种颜色。 N≤100000N≤100000N\leq 100000分析:这是一道比较有趣的数据结构题: 利用扫描线算法,首先将所有坐标离散化,然后按照正方向枚举x坐标,将每个矩形视作两条线段:...原创 2018-05-26 22:38:25 · 271 阅读 · 0 评论 -
【李超线段树】BZOJ1568[JSOI2008]Blue Mary开公司
前言:这道题是李超线段树的一道模板题,鉴于李超线段树(似乎)应用性并不广,所以就用这道题顺便写写总结。题目大意:题目很鬼畜,一句话题意是: 动态插入一些离散的直线(有斜率),同时询问每条直线在某个点的取值的最大值。算法介绍差不多李超线段树就是干这个用的了我们用一个标记来表示一个区间的最优线段,每次插入一个线段时,设原来的最优线段为l1l1l_1,插入的线段为l...原创 2018-03-13 20:40:25 · 180 阅读 · 0 评论 -
【线段树】Fafa and Array
题意:给出一个长为N的序列,需要支持两种操作: 1、求出在序列中某个位置加上x后,使得 ∑i=1i<n|ai+1−ai|∑i=1i<n|ai+1−ai|\sum_{i=1}^{ial,al+1,al+2……aral,al+1,al+2……ara_l,a_{l+1},a_{l+2}……a_r均加上x分析:这道题是用最优性来满足正确性的典型。首先,我们考虑根据趋势,...原创 2018-03-17 08:21:12 · 215 阅读 · 0 评论 -
【线段树】BZOJ2989 数列
题意:给定一个长度为n的正整数数列a[i]。 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]|。 2种操作(k都是正整数): 1.Modify x k:将第x个数的值修改为k。 2.Query x k:询问有几个i满足graze(x,i)<=k。因为可持久化数据结构的流行,询问不仅要考虑当前数列,还要考虑任意历史版本,...原创 2018-02-23 21:40:14 · 247 阅读 · 0 评论 -
【线段树】省选模拟51nod 小朋友的笑话
题目:分析:辣鸡51nod前两题迅速切掉花了1h先写了一个O(nnlogn)O(n\sqrt n logn)O(nnlogn)的算法,T了,开始想->放弃:1h再写了一个O(nlog2n)O(n\log^2 n)O(nlog2n)的算法,又T了,开始想->放弃:2h最后无奈又想了一个O(nlogn)O(n log n)O(nlogn)的算法,没调完GG最后一看O(...原创 2019-03-25 10:46:44 · 347 阅读 · 0 评论