线段树 线段树的根节点是整段区间,其它结点是由区间不断二分得到的子区间,其中叶子结点是区间的每个单独的元素。 存储 这里使用结构体存线段树。 建树 这里默认我们要求的是区间和,故结点值均为区间和。 可以视情况改变结点值的含义。 懒标记 如果每次对叶子结点的值进行修改时,总是一并将受其影响的其他父结点 ...
分类:
编程语言 时间:
2020-05-22 19:29:31
阅读次数:
47
题目描述 给定一个长度为 $n$ 的字符串 $P$,有 $m$ 次询问,每次给定两个参数 $l$ , $r$,询问子串 $P[l,r]$ 所构成的后缀树的结点数。 $n\le 10^5,m\le 3\times 10^5$ 题解 tag:分类计数;后缀树/后缀自动机;线段树/树状数组;哈希。 做法来 ...
分类:
其他好文 时间:
2020-05-21 23:55:09
阅读次数:
94
1、什么是线段树? 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离 ...
分类:
其他好文 时间:
2020-05-18 21:05:43
阅读次数:
42
时间$2020.05.18$,写出三题,罚时C1一次(大号)。小号无罚时。(过于真实 无rating。 只含前4题因为我只会前4题。 A题上来先秒为敬。小号交一发没问题,稍微改改大号走起。 B稍微想了一下就发现了(真tm妙)规律,然后小号一发就A,大号走起。 目前为止十分顺利,小号都一遍A。 C1直 ...
分类:
其他好文 时间:
2020-05-18 20:47:28
阅读次数:
59
GSS问题(二) 仍然是线段树的应用模板题,非常经典 题面 $n$个数,$n\leqslant1e5$,和$\leqslant10^{18}$,全是自然数 ~~翻译:long long能过~~ 给出两种操作: 区间开方$\rightarrow$将区间每一个数单独开方,下取整 区间求和$\righta ...
分类:
其他好文 时间:
2020-05-18 20:40:50
阅读次数:
44
题意:有n根长度不尽相同的棍子,初始时它们首尾垂直相连,标号为1--n,第一根棍子的下端坐标为(0,0),上端坐标为(0,len[1]),其余棍子依次类推。接下来执行C此旋转,每次输入一个编号num和角度rad,使得第num根棍子和第num+1跟棍子间的逆时针角度变为rad度,求每次旋转后第n跟棍子 ...
分类:
其他好文 时间:
2020-05-17 17:56:20
阅读次数:
68
ll p,a[MAXN],atag[MAXN],mtag[MAXN],ctag[MAXN],tree[MAXN]; void Pushup(int rt){tree[rt]=(tree[rt<<1]+tree[rt<<1|1])%p;} void Pushdown(int rt,int ln,int ...
分类:
其他好文 时间:
2020-05-17 16:08:05
阅读次数:
38
人生第一道树套树的题,看着bin巨的代码才学会,太累了,文字明天补 #include<bits/stdc++.h> using namespace std; const int maxn=60010; int n,q,m,tot; int a[maxn]; int t[maxn]; int T[ma ...
分类:
编程语言 时间:
2020-05-17 01:13:19
阅读次数:
56
很好的题解链接,学到了懒标记和线段树的更容易写的版本。https://llkabs.blog.luogu.org/xian-duan-shu 本题主要解决区间修改,而不是单点修改。 ac代码如下 #include<bits/stdc++.h> using namespace std; typedef ...
分类:
其他好文 时间:
2020-05-16 19:08:30
阅读次数:
49
通过A,C数组数组确定B数组。断环成链。 修改A数组只影响B数组的四个节点。 求的是离B0最远零区间的距离。 因此用线段树维护B数组的01情况 二分找答案 代码如下 #include<cstdio> #include<cstring> #include<cstdlib> #include<algor ...
分类:
其他好文 时间:
2020-05-16 12:34:55
阅读次数:
56