线段树
HumveeA6
这个作者很懒,什么都没留下…
展开
-
(模板)线段树 (区间更新,区间求和)
已知一个数列,你需要进行下面两种操作:1.将某区间每一个数加上x2.求出某区间每一个数的和(参见洛谷P3372) 后面query和update的部分一定要小心begin,end和left,right不要弄混了。 可以认为left和right在整个程序中都是在代表一个范围#include<cstdio>#include<iostream>#include&...原创 2018-03-12 19:01:02 · 442 阅读 · 0 评论 -
(模板)线段树(区间双重更新,区间求和)
题目可参见洛谷P3373 已知一个数列,你需要进行下面三种操作:1.将某区间每一个数乘上x2.将某区间每一个数加上x3.求出某区间每一个数的和首先先说明本题的思路。题目要求有三种操作,两种是不同的在线修改,还有一种是在查询取模后的结果。而这两种操作又是区间乘法和区间加法,我们可以惊喜的发现这两种操作对于取模运算来说都是自由的!但是面对非常大的数据,我们必须思考怎么样用线段树优雅的...原创 2018-03-12 20:25:19 · 556 阅读 · 0 评论 -
(模板)线段树(单点更新,单点求值)
最主要的区别就是不用lazytab了,所以不需要pushdown了,不过还是跟复杂版的有所区别的…小心对待 (原题是洛谷P1198,数据加强以后要记得特判数列为空的情形)#include<cstdio>#include<iostream>#include<algorithm>using namespace std;typedef long long...原创 2018-03-12 23:00:47 · 221 阅读 · 0 评论 -
POJ3368
变形的线段树; 这一类区间查询的问题很容易想到用线段树来做。显然我们首先要明确线段树的节点中维护各区间的最大次数。但这样是不够的,如果一个查询区间跨越了两个区间,那查询区间的最大次数怎么取呢?取较大值?加和?显然不是那么简单。(类似样例中,连续的4个1二分时会被分开左右两区间,那么如果查询区间1,10时就要考虑中间4个1这种情况了);仔细观察题目条件,数组本身是升序的。这表示,两个区间连接之...原创 2018-03-13 16:50:02 · 315 阅读 · 0 评论