首页 > TAG信息列表 > SegTree
【数据结构】可持久化线段树
可持久化线段树 权值线段树 普通的线段树的节点通常储存该区间的值,节点范围是一个区间。权值线段树储存的是该值域内的元素个数,节点范围是一个值域。 利用前缀和的思想 一个区间\([l,r]\)的权值线段数可以由\([1,r]\)和\([1,l-1]\)相减得来。 但是n棵树占用的空间太大,而这n线段树入门
线段树构造 //PushUp函数更新节点信息,这里以求和为例 void PushUp(int rt){ SegTree[rt].val = SegTree[rt<<1].val + SegTree[rt<<1|1].val; } void build(int l, int r, int rt ){//构造根为rt,A区间为[l,r]线段树 if(1 == r){ //叶子节点 SegTree[rt].va[树链剖分] HDU 6962 I love tree
题目大意 有一棵 \(n\) 个点的数以及 \(q\) 个操作,每个点的点权初始时为0,操作1将从 \(a\) 到 \(b\) 的路径上点的权值分别加上 \(1,4,9,16,\dots\),操作2询问一个点的点权。\((1\leq n,q\leq 10^5)\) 题解 首先肯定可以用树链剖分来维护。 注意到 \(1,4,9,16,\dots\) 差分后是一个POJ 3264
一道RMQ问题,锻炼使用线段树解决。不过对于线段树的query过程还有待提高理解程度 #include <iostream> #include <algorithm> #include <queue> #include <string> #include <vector> #include <cstdio> #include <cstring> #include <cmath> #include <str【模板】单点更改,单点查询;区间更改,单点查询;区间更改,区间查询(树状数组,线段树)
文章目录 单点更改,单点查询例题Code树状数组线段树 区间更改,单点查询例题Code树状数组线段树 区间更改,区间查询例题 单点更改,单点查询 例题 Luogu:P3374 Code 树状数组 //树状数组 #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<线段树及主席树
文章目录 线段树及主席树个人理解线段树理解线段树模板主席树理解(可持久化线段树)问题 A: 敌兵布阵题目描述输入输出样例输入样例输出代码 问题 B: 最大数题目描述输入输出样例输入样例输出代码 问题 C: Distinct Characters Queries(英文题面)(线段树)题目描述输入输出样例线段树 P3373
题目 https://www.luogu.com.cn/problem/P3373 思路 参考:https://www.luogu.com.cn/blog/milkfilling/solution-p3373 ①加法优先,即规定好segtree[root*2].value=((segtree[root*2].value+segtree[root].add)*segtree[root].mul)%p,问题是这样的话非常不容易进行更新操作,假如改[洛谷 P3834] 可持久化线段树模板
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <vector> using namespace std; #define RG register int #define LL long long template<typename elemType> inline void Read(elemType &Codeforces Round #620 Div2F Animal Observation(前缀和+动态规划+线段树维护)
题意: 作者喜欢观察动物,因此他购买了两个照相机,以拍摄森林中野生动物的视频,一台摄像机的颜色是红色,一台摄像机的颜色是蓝色。 从第1天到第N天,作者将拍摄N天的视频。森林可以分为M个区域,编号从1到M。他将通过以下方式使用相机: 在每个奇数天,将红色相机带到森林中并录制两天的视频。[模板][李超线段树][JSOI 2008] Blue Mary开公司
题目大意 每次给整个区间内加入一个一次函数,求单点最大值。 Code #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; #define RG register int #define LL long long const int Index=50010; double k[100010],b[100010];【bzoj2049】[Sdoi2008]Cave 洞穴勘测——线段树上bfs求可撤销并查集
题面 2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 12030 Solved: 6024 Description 辉辉热衷于洞穴勘测。某天,他按照地图来到了一片被标记为JSZX的洞穴群地区。经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条MAZE(2019年牛客多校第二场E题+线段树+矩阵乘法)
题目链接 传送门 题意 在一张\(n\times m\)的矩阵里面,你每次可以往左右和下三个方向移动(不能回到上一次所在的格子),\(1\)表示这个位置是墙,\(0\)为空地。 现在有\(q\)次操作,操作一是将\((x,y)\)这个位置的状态取反,操作二问你从\((1,x)\)走到\((n,y)\)的方案数。 思路 首先我们考虑2019年牛客多校第四场 B题xor(线段树+线性基交)
题目链接 传送门 题意 给你\(n\)个基底,求\([l,r]\)内的每个基底是否都能异或出\(x\)。 思路 线性基交板子题,但是一直没看懂咋求,先偷一份咖啡鸡板子写篇博客吧~ 线性基交学习博客:传送门 代码实现如下 #include <set> #include <map> #include <deque> #include <queue> #include <stPlease, another Queries on Array?(Codeforces Round #538 (Div. 2)F+线段树+欧拉函数+bitset)
题目链接 传送门 题面 思路 设\(x=\prod\limits_{i=l}^{r}a_i\)=\(\prod\limits_{i=1}^{n}p_i^{c_i}\) 由欧拉函数是积性函数得: \[ \begin{aligned} \phi(x)&=\phi(\prod\limits_{i=1}^{n}p_i^{c_i})&\\ &=\prod\limits_{i=1}^{n}\phi(p_i^{c_i})&\\ &=\P3373 【模板】线段树 2
题目来源:洛谷 题目描述 如题,已知一个数列,你需要进行下面三种操作: 1.将某区间每一个数乘上x 2.将某区间每一个数加上x 3.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含三个整数N、M、P,分别表示该数列数字的个数、操作的总个数和模数。 第二行包含N个用空格分隔的整数