![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树/树状数组
wineandchord
这个作者很懒,什么都没留下…
展开
-
洛谷 P5490 【模板】扫描线
求 nnn 个矩形的面积并 思路:扫描线 #include<iostream> #include<cstdio> #include<algorithm> #define ls (x<<1) #define rs (x<<1|1) #define MAXN 1000010 using namespace std; typedef long long ll; int n,x1,x2,y1,y2,X[MAXN<<1]; struct Scan原创 2020-06-24 08:59:21 · 206 阅读 · 0 评论 -
洛谷 P3384 【模板】轻重链剖分
树链剖分模板。 给一个 nnn 结点的树(连通且无环),每个结点上有一个数值,进行如下操作: 结点 xxx 到结点 yyy 的最短路径上所有结点的值 +z+z+z 求结点 xxx 到结点 yyy 的最短路径上的所有结点值的和 将以结点 xxx 为根结点的子树中所有结点值 +z+z+z 求以结点 xxx 为根结点的子树内所有结点值之和 ...原创 2020-04-11 11:52:18 · 192 阅读 · 0 评论 -
洛谷 P3368 【模板】树状数组 2
给一个数列,进行以下操作: 某区间每个数 +x+x+x 求某位置的值 区间修改,单点查询。用数组 b 来存放修改产生的差分。 代码如下: #include<iostream> #include<cstdio> #define MAXN 500010 using namespace std; typedef long long ll; int n,m,t,x,y; ll ...原创 2020-04-04 13:38:05 · 69 阅读 · 0 评论 -
洛谷 P3374 【模板】树状数组 1
给一个数列,进行两种操作: 某个数 +x+x+x 求区间和 和线段树1不同之处在于此题是单点修改,区间查询。 树状数组写起来比线段树简单一点,代码如下: #include<iostream> #include<cstdio> #define MAXN 500010 using namespace std; int n,m,a[MAXN],b[MAXN],t,x,y; i...原创 2020-04-04 13:24:35 · 92 阅读 · 0 评论 -
洛谷 P3373 【模板】线段树 2
给一个数列,进行三种操作: 某区间每个数 ×x\times x×x 某区间每个数 +x+x+x 求区间和 和线段树模板1相比,多了一个乘法操作。要先乘后加。还有注意步步取模… 代码如下: #include<iostream> #include<cstdio> #define lc(p) ((p)<<1) #define rc(p) (((p)<<...原创 2020-04-04 09:43:07 · 141 阅读 · 0 评论 -
洛谷 P3372 【模板】线段树 1
已知一个数列,进行以下操作: 某区间每个数 +k+k+k 求区间和原创 2020-04-03 09:33:13 · 78 阅读 · 0 评论 -
HDU 4747 Mex 递推DP/线段树
Mex HDU - 4747 定义 mex(S)\mathrm{mex}(S)mex(S) 为集合 SSS 中未出现的最小非负整数。 给一个非负整数序列 {ai}i=1n\{a_i\}_{i=1}^n{ai}i=1n,定义 mex(L,R)\mathrm{mex}(L,R)mex(L,R) 为 aL∼aRa_L\sim a_RaL∼aR 之间未出现的最小非负整数,计算: ∑1≤L≤R≤nm...原创 2020-03-29 11:17:37 · 229 阅读 · 1 评论