前言 首先来通过一道题目来展开说明 已知一个数列,你需要进行下面两种操作: 1. 将某区间每一个数数加上x 2. 求出某一个数的值 数据规模: 对于30%的数据:N include include include using namespace std; int a[500005 3+10],n,m ...
分类:
编程语言 时间:
2018-10-28 22:10:39
阅读次数:
299
一维树状数组 · 单点修改 + 单点查询: 直接使用即可 · 区间修改 + 单点查询: 另外维护一个维护前缀和的树状数组,查询时查询与原值相加即可。 · 区间修改 + 区间查询: <div align=center> 居中 </div> ...
分类:
编程语言 时间:
2018-10-25 22:09:00
阅读次数:
226
题面 分析 这道题其实是差分模板qvq 区间修改 单点查询 而且题面也疯狂暗示,相邻两点海拔差,用差分简直是按照出题人意思来的,而且人性化的是n+1个点刚好n个区间,查询也只用查询第n点。 所以对于每个修改,其实只有一头一尾两个点受了影响,即l-1和l的高度差影响温度和r和r+1的高度差影响温度,中 ...
分类:
其他好文 时间:
2018-10-25 20:14:36
阅读次数:
101
最近在刷数据结构 数据结构题目比图论简单一点;从生疏到......蒟蒻。 一、树状数组&线段树基础 树状数组+差分+离散化=》可以用来求逆序对 树状数组+差分可以搞一搞区间修改; 当然,能用树状数组,基本(不知道是不是全部)都能用线段树。 线段树的操作就复杂的多了,子函数有build(),query ...
分类:
其他好文 时间:
2018-10-20 22:18:43
阅读次数:
180
T1 飞行时间 对于一个可能跨时区的航班,给定来回程的起降时间。假设飞机来回飞行时间相同,求飞机的飞行时间。 sol: 很明显答案是(过去落地 - 过去起飞 + 回来落地 - 回来起飞) / 2 时间转换要仔细算一下不要跟某省队dalao一样写挂就可以了 T2 二阶和 区间修改,求区间区间和的和 s ...
分类:
其他好文 时间:
2018-10-20 19:56:12
阅读次数:
238
把式子展开以后会发现,可以用线段树维护$x,y,x*y,x^2$分别的区间和 然后操作有区间加和区间修改 这个pushdown的时候,如果改和加的标记同时存在,那一定是先改再加,要不然加的标记已经被清掉了 所以在pushdown的时候,如果有改的标记,要把孩子的加的标记清掉 然后注意细节就行了(用* ...
分类:
其他好文 时间:
2018-10-15 23:23:01
阅读次数:
138
刚刚学习了一下$ZKW$线段树 一个非常社会的写法(非递归)~~终于不用蓝屏了~~ 这个神奇的线段树,,,是从下向上建的。。。 如题,,, 第一个循环是求log2(n+1) 区间修改的话只能加或乘但是不能乘加 这里我们采用标记永久化的思想(就是不下推lazy标记~~就让他在那里扑街~~) 区间查询 ...
分类:
其他好文 时间:
2018-10-13 11:42:27
阅读次数:
137
这道题需要支持区间修改和区间询问,因此采用线段树加以维护。 由于求的是开着的灯的数目,因此维护sum:区间[ l , r ]中开着的灯的数目。 tag取做0/1,表示区间是否反转,在进行标记下传时,如果tag=1,则下传,否则返回。(tag的选取一般跟操作有关) 代码如下: ...
分类:
其他好文 时间:
2018-10-11 01:46:50
阅读次数:
124
写在前面 之前一直不知道树状数组可以支持区间修改,所以写一篇博客记录一下。 首先给个小栗子: 如下图: 利用差分的思路,就得到下图: 那么如果我们要求将2~4的所有元素+2呢?我们就可以得到下图: 可以发现,差分的第二项和第五项一个加了2,一个减了2,所以对于每次区间[l,r]操作,我们只需要在l和 ...
分类:
编程语言 时间:
2018-10-08 19:37:56
阅读次数:
167
树状数组的应用: 1.单点修改,区间查询。 2.区间修改,单点查询。 3.区间修改,区间查询。 实际求解问题的时候经常会用树状数组来维护一个区间,因为相比线段树来说树状数组常数比较优越而且代码实现上比较容易,空间需要也比较少。 应用模板: 1.单点修改,区间查询。 2.区间修改,单点查询。 Matr ...
分类:
编程语言 时间:
2018-10-07 10:34:27
阅读次数:
184