数据结构 线段树
Yishui_Blog
Try our best
展开
-
线段树的入门小结
线段树的入门首先我们应该需要明白线段树可以解决的问题,如 求解数组区间之和,更新区间等如果使用暴力的方法会超时,这样就引入了线段树这一数据结构线段树的本质是一颗平衡二叉树线段树的基本性质如下:父亲的区间是[a,b] (c=(a+b)/2)左儿子的区间是[a,c],右儿子的区间是[c+1,b],线段树需要的空间为数组大小的四倍。以1到10的区间举例,构造的线段树如下 线段树算法包括的主要的函数有三个原创 2017-04-12 17:38:15 · 361 阅读 · 0 评论 -
GYM 101350L. All’s Wall That Ends Wall ( 线段树
L. All’s Wall That Ends Wall 题目描述In the magical forest, you come upon N walls that you think is a great place to store water for your animal friends. The ith wall consists of ai blocks stacked on ...原创 2018-04-25 19:53:39 · 411 阅读 · 0 评论 -
2018湘潭校赛 H-统计颜色 ( 线段树
H-统计颜色 题目描述n个桶按顺序排列,我们用1~n给桶标号。有两种操作: 1 l r c 区间[l,r]中的每个桶中都放入一个颜色为c的球 (1≤l,r ≤n,l≤r,0≤c≤60) 2 l r 查询区间[l,r]的桶中有多少种不同颜色的球 (1≤l,r ≤n,l≤r)输入有多组数据,对于每组数据: 第一行有两个整数n,m(1≤n,m≤100000...原创 2018-04-28 14:15:52 · 229 阅读 · 0 评论 -
LOJ #2573. 「TJOI2018」数学计算( 线段树
考虑以时间为轴每个区间维护一段值,就行点修改TAT#include <bits/stdc++.h>using namespace std;#define ls st<<1#define rs st<<1|1#define fst first#define snd ...原创 2018-06-13 21:02:37 · 237 阅读 · 0 评论 -
HDU - 2795 Billboard (线段树
题意:没看出来是个线段树,,, 很惭愧,, n 层 对应 n个节点,每次查询更新整颗线段树,并且将根节点记录为最大的剩余的值, 建树的时候, 我们要知道 线段树节点数 最大也仅仅为min(n,h),h>nmin(n,h),h>nmin(n,h),h > n 多的没有意义#include <algorithm>#include <iostream>...原创 2018-07-20 18:05:16 · 217 阅读 · 0 评论 -
HDU 4059 湫湫系列故事——减肥记II ( 线段树
题意: 单点更新模板#include <bits/stdc++.h>using namespace std;const int MAXN = 1e5+10;#define ls o<<1#define rs o<<1|1struct node { int l, r, x; bool v;}t[MAXN<<2]...原创 2018-08-04 22:28:04 · 164 阅读 · 0 评论 -
Codeforces 438 D. The Child and Sequence (线段树
题意: 三种操作 1.区间求和 3.区间取模 2.单点更新题解:直接单点更新暴力维护, 取模的均摊复杂度为O(nlogn)O(nlogn)O(nlogn)#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long long #define pb push_back#define...原创 2018-08-16 14:59:36 · 228 阅读 · 0 评论 -
BZOJ 3211 花神游历各国 ( 线段树区间开根号
题意:两个操作 1 区间取模 2 区间求和题解:考虑到取模的性质,一个数 顶多被操作不超过101010次就会变成111 标记一下 即可 保证复杂度为O(nlogn)O(nlogn)O(nlogn)#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long long #define ...原创 2018-08-16 21:02:50 · 265 阅读 · 0 评论 -
CodeForces242E XOR on Segment (线段树+二进制拆位
题目链接: http://codeforces.com/problemset/problem/242/E题意:给出n个点,m次操作,1 x y:查询区间x-y的和,2l r x,区间l-r每个数都异或x;思考: 我们可以很容易的想到,异或是在二进制上面进行的, 然后我们每次异或 其实就是反向的更改这一区间上面的数字, 数据的范围大概是在2^20内 所有我们可以直接建20颗线段树, ...原创 2018-10-12 11:35:22 · 187 阅读 · 0 评论 -
ACM/ICPC2018北京网赛-hihocoder #1831 80 Days(暴力/尺取
题意:一个环 每次到一个点会得到一个值,和失去一个值 期间的值不能为小于0直接暴力线段树为何差值的前缀和即可尺取两个对着扫#include &lt;bits/stdc++.h&gt;using namespace std;#define cpp_io() {ios::sync_with_stdio(false); cin.tie(NULL);}#define rep(i,a,n...原创 2018-09-27 16:40:17 · 222 阅读 · 0 评论 -
依水的线段树题集
首先我们要明白什么问题适合用线段树解决 统计量可以合并 修改量可以合并 通过修改量可以直接修改统计量 总之: 满足区间加法既可以使用线段树维护信息 引自 hzwer.com的线段树PPT一.单点更新https://blog.csdn.net/wang2332/article/details/79856430二.区间更新https://blo...原创 2018-04-03 00:15:52 · 169 阅读 · 0 评论 -
NBUT -1113 RMQ with Shifts ( 线段树
题目描述In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for each query (L, R) (L<=R), we report the minimum value among A[L], A[L+1], …, A[R]. Note that the in...原创 2018-03-21 23:58:39 · 206 阅读 · 0 评论 -
CodeForces - 620E New Year Tree ( 状压+线段树+DFS
New Year Tree 题目描述The New Year holidays are over, but Resha doesn’t want to throw away the New Year tree. He invited his best friends Kerim and Gural to help him to redecorate the New Year tree...原创 2018-04-08 19:19:37 · 239 阅读 · 0 评论 -
HDUoj 1754 I Hate It ( 线段树
I Hate ItTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 72934 Accepted Submission(s): 28152Problem Description 很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当原创 2017-04-13 01:48:35 · 412 阅读 · 0 评论 -
Poj 3468 A Simple Problem with Integers(线段树
A Simple Problem with IntegersTime Limit: 5000MSMemory Limit: 131072KTotal Submissions: 107094Accepted: 33429Case Time Limit: 2000MSDescriptionYou have N integers, A1, A2, … , AN. You need to deal with原创 2017-04-14 11:39:52 · 280 阅读 · 1 评论 -
51Nod 1287 加农炮 ( 暴力/线段树
Description一个长度为M的正整数数组A,表示从左向右的地形高度。测试一种加农炮,炮弹平行于地面从左向右飞行,高度为H,如果某处地形的高度大于等于炮弹飞行的高度H(A[i] >= H),炮弹会被挡住并落在i - 1处,则A[i - 1] + 1。如果H <= A[0],则这个炮弹无效,如果H > 所有的A[i],这个炮弹也无效。现在给定N个整数的数组B代表炮弹高度,计算出最后地形的样子。原创 2017-04-30 16:00:03 · 507 阅读 · 0 评论 -
HDUoj 1166 敌兵布阵 (树状数组/线段树
敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 86569 Accepted Submission(s): 36484Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek原创 2017-04-12 15:59:05 · 374 阅读 · 0 评论 -
UESToj 1057 秋实大哥与花 ( 线段树
秋实大哥与花Description秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前。所以秋实大哥精心照料了很多花朵。现在所有的花朵排成了一行,每朵花有一个愉悦值。秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉悦值都会增加一个相同的值vv(vv可能为负)。同时他想知道每次他唱完歌后这一段连续的花朵的愉悦值总和是多少。Input第一行有一个整数nn,表示花朵的总数目。第二行包含nn个整数原创 2017-04-27 00:19:05 · 580 阅读 · 0 评论 -
Poj 3264 Balanced Lineup ( 线段树
Balanced LineupDescriptionFor the daily milking, Farmer John’s N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of原创 2017-07-31 20:32:29 · 299 阅读 · 0 评论 -
HDUoj- 1698 Just a Hook ( 线段树
Just a HookDescriptionIn the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same原创 2017-08-01 23:58:08 · 321 阅读 · 0 评论 -
HAUToj 1284: SP教数学 (线段树+矩阵快速幂
1284: SP教数学DescriptionInputOutput对于每组数据的2操作,输出一行对1e9 + 7取模的答案Sample Input7 42 2 1 1 3 3 22 1 52 6 71 3 4 32 6 6Sample Output632题解:线段树+矩阵快速幂 出题人的解释我们知道对于斐波那契数可以通过乘以一个矩阵来进行递推。那么对于 +x 这一区间操作,我们可以对这原创 2017-08-05 01:57:03 · 673 阅读 · 0 评论 -
POJ 2777 Count Color ( 线段树&&位运算
Count ColorDescriptionChosen Problem Solving and Program design as an optional course, you are required to solve all kinds of problems. Here, we get a new problem. There is a very long board with lengt原创 2017-09-21 17:14:25 · 527 阅读 · 0 评论 -
洛谷 P3373 【模板】线段树 2
P3373 【模板】线段树 2题目描述如题,已知一个数列,你需要进行下面三种操作:1.将某区间每一个数乘上x2.将某区间每一个数加上x3.求出某区间每一个数的和输入第一行包含三个整数N、M、P,分别表示该数列数字的个数、操作的总个数和模数。第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。接下来M行每行包含3或4个整数,表示一个操作,具体如...原创 2018-03-05 08:33:41 · 260 阅读 · 0 评论 -
ZOJ 3772 Calculate the Function(线段树+矩阵
题意:求一个区间内的的递推公式的值 递推的区间为[l,r][l,r][l,r], 这样因为递推式和矩阵的性质是相同的, 我们可以考虑使用线段树维护矩阵的相乘 这样复杂度就可以做到O(nlogn)O(nlogn)O(nlogn)]特别需要注意的事情是 因为这个原因wa了无数次 我们在线段树中的成分 一定要遵循矩阵相乘的顺序,因为矩阵我们维护的相乘顺序是从rrr −&gt;-&...原创 2018-10-08 21:18:20 · 171 阅读 · 0 评论