
数据结构 线段树
笑对这个世界的志贵
这个作者很懒,什么都没留下…
展开
-
SDUT 3771 数组计算机 线段树 单点增减
数组计算机 Time Limit: 1000MS Memory Limit: 65536KB Problem Description bLue 有一个神器的机器,这个机器可以读入一个数组,并按照用户要求快速地进行数组的处理和计算,它支持如下两种操作: 操作 1:把数组中第 p 个元素的值增加 v。 操作 2:计算数组中 [l, r] 区间内所有数的和。 这个翻译 2017-03-10 17:07:08 · 557 阅读 · 0 评论 -
【维护区间最长连续子序列 && 线段树 && 区间归并】HDU - 1540 Tunnel Warfare
Problem Description 输入n,m。分别代表有一个1-n的序列,接下来m行,分别有三种操作。 D x: 将x这个点破坏掉,x这个点就会破坏连续子序列。Q x: 询问包括点x在内的最长连续子序列长度(一开始的时候是n)。R: 恢复最近一个被破坏的点。思路: 我们需要维护一个区间里面,从左向右最长的连续子序列lmax, 从右向左最长的连续子序列rmax, 同时用一个变量o翻译 2017-08-24 08:46:08 · 297 阅读 · 0 评论 -
【线段树多符号区间更新】HDU - 4578 Transformation
Problem Description 输入n,m。给你长度为n的数组,初始化为0。接下里有m行操作: (1)”1 x y c”,代表 把区间 [x,y] 上的值全部加c (2)”2 x y c”,代表 把区间 [x,y] 上的值全部乘以c (3)”3 x y c” 代表 把区间 [x,y]上的值全部赋值为c (4)”4 x y p” 代表 求区间 [x,y]翻译 2017-08-24 09:10:03 · 243 阅读 · 0 评论 -
【线段树维护区间编号 && 区间更新】HDU - 4614 Vases and Flowers
Problem Description 输入T,代表有T组测试数据。每组测试数据输入n, m。分别代表有n个花瓶,编号为0-(n-1)。接下里有m行操作:分为两种操作。 (1) : 1 x y :从第x个花瓶开始往后放y朵花。有位置就放,没位置就跳过,直到放完或者超过n-1 同时 返回最开始放的花瓶编号和最后放的花瓶编号如果一朵也放不了就返回”Can not put any one.”。(翻译 2017-08-24 09:35:16 · 278 阅读 · 0 评论 -
【线段树 && 离线处理 && 维护区间规定下标的和】HDU - 4288 Coder
Problem Dscription 给你n个操作,操作分为三种,(1): add x,往集合里面添加元素x。(2): del x,从集合里面移除元素x。(3): sum 求下标mod 5 == 3的对应元素值的和。集合满足从小到大思路: 离线处理:就是先输入完数据后在处理。线段树维护两个量,num代表该区间有几个数。sum[]代表该区间mod5==1的和,mod5==2的和,mod5==翻译 2017-09-05 11:36:57 · 249 阅读 · 0 评论 -
【lca && 线段树】URAL - 2109 Tourism on Mars
Problem Description 给你 n 个点,接下来 n-1 行,每行输入 u, v 代表 u 点和 v 点之间有一条无向边。 接下来输入 q,代表有 q 次询问。 u 到 v 的道路中,距离 1 点最近的点,是重要的点。 每次询问输入 u, v 问你。u 到 v 重要的点,u+1 到 v 重要的点…. v-1 到 v 重要的点,那个点距离 1 更近,输出这个点...翻译 2018-01-29 20:35:25 · 328 阅读 · 0 评论 -
【线段树】Gym - 101334F Feel Good
Step1 Problem: 输入n,给你n个数下标分别从1到n, 让你求连续的序列 它们的和 * 它们的最小值 最大。 输出最大值 和 序列左端点 和 序列右端点 例: 6 3 1 6 4 5 2 输出: 60 3 5 数据范围: 1 <= n <= 100000, 数a[i]的范围[0, 1e6].Step2 In...翻译 2018-04-07 10:29:53 · 180 阅读 · 0 评论 -
【二维树状数组&&思维】POJ - 2155
Step1 Problem: 给你一个n*n的矩阵,初始全为0。 有两种操作: C x1 y1 x2 y2:矩阵里的1变成0,0变成1 Q x y:询问坐标(x, y)的值是1还是0 输入: 1 2 10 C 2 1 2 2 Q 2 2 C 2 1 2 1 Q 1 1 C 1 1 2 1 C 1 2 1 2 C ...翻译 2018-05-02 11:12:59 · 219 阅读 · 0 评论 -
【扫描线&&线段树&&矩阵范围内点个数】HDU - 5091
Step1 Problem: 平面上有n个点(x, y), 你有一个宽W, 高H的框,问你一次最多可以框到几个点(包括框的边界)。Step2 Ideas: 对于每个点(x, y),我们维护一个右上方的矩阵【(x, y) -> (x+w, y+h)】 对于每个点(x, y),你另外添加一个点(x+w, y)。从左到右扫描:遇到(x, y),区间[y, y+h]加1,...翻译 2018-05-02 11:53:32 · 641 阅读 · 0 评论 -
【线段树 && 区间加 1 和区间求 a[i]/b[i] 的和】HDU - 6315 Naive Operations
Step1 Problem: 给你 n 个数,数组 a[] 初始化为 0,给你数组 b[](n 的全排列),进行 q 次操作,每次操作分为: add L R: 数组 a[] 区间 L 到 R 的值都加 1 query L R:求区间 L 到 R,a[i]/b[i] 的和 数据范围: 1 <= n <= 1e5, 1 <= q <= 1e5, ...翻译 2018-07-26 08:20:19 · 269 阅读 · 0 评论 -
【线段树 && 区间更新 求区间 gcd】HYSBZ - 5028 小Z的加油店
Step1 Problem: 给你 n 个数,有 m 次操作 操作分为两种类型: ok == 1: 询问区间 L 到 R 的所有数的 gcd ok != 1: 区间 L 到 R 都加 v 数据范围: 1 <= n,m <= 1e5, 1 <= L <= R <= n, 1 <= v <= 1000.Step2 I...翻译 2018-08-13 10:06:41 · 495 阅读 · 0 评论 -
【线段树区间更新 && 染色】ZOJ - 1610 Count the Colors
Problem Description 给你一个n,接下来n行,每行x1,x2,c代表将一维坐标轴上的x1-x2这段区间染色成颜色c,先画出来的可能会被后面画出来的覆盖掉。问你最后能看到的颜色和条数思路: 区间更新,只需要lazy标记就好了。x1需要++,因为区间段少1。详细看代码#include<bits/stdc++.h>using namespace std;#define l翻译 2017-08-24 08:26:14 · 410 阅读 · 0 评论 -
【离散化 && 线段树 && 染色】POJ - 2528 Mayor's posters
Problem Description 给你T组测试数据,每组测试数据输入n,代表有n行,接下来每行输入ul, ur代表海报贴的区间覆盖是ul-ur。问你贴完后能看到多少张海报。Sample Input 1 5 1 4 2 6 8 10 3 4 7 10Sample Output 4思路: 因为翻译 2017-08-23 21:56:06 · 217 阅读 · 0 评论 -
SDUT 3302 效率至上 求区间内最大最小
效率至上 Time Limit: 5000MS Memory Limit: 65536KB Problem Description 题意很简单,给出一个数目为n的非有序序列,然后有m次查询.对于每次查询输入两个正整数l,r请输出区间[l,r]的最大值与最小值的差值Input 第一行:输入两个正整数n,m (1<=n<=50000, 1<=m<=200000 ); 第翻译 2017-03-10 17:16:44 · 495 阅读 · 0 评论 -
学长总结的线段树 单点增减/替换 区间替换 区间增减
学长的总结棒棒哒!!#include <cstdio>#include <algorithm>using namespace std;// lson, rson 分别表示左孩子和右孩子,在后面的函数中传参使用#define lson l, m, rt<<1#define rson m+1, r, rt<<1|1const int MAXN = 最大n;const int INF = 0x翻译 2017-02-14 16:04:13 · 582 阅读 · 1 评论 -
【位运算 && 线段树】SDUT 3930 皮卡丘的梦想2
Problem Description 一天,一只住在 501 实验室的皮卡丘决定发奋学习,成为像 LeiQ 一样的巨巨,于是他向镇上的贤者金桔请教如何才能进化成一只雷丘。 金桔告诉他需要进化石才能进化,并给了他一个地图,地图上有 n 个小镇,他需要从这些小镇中收集进化石。 接下来他会进行 q 次操作,可能是打听进化石的信息,也可能是向你询问第 l 个小镇到第 r 个小镇之间的进化石翻译 2017-06-27 10:19:52 · 323 阅读 · 0 评论 -
【线段树 && 区间增减】POJ 3468 A Simple Problem with Integers
Problem Description 输入n,接下来n行代表n种货币。接下来输入m,代表接下来m行,s, num, str.代表s货币转换成货币str的转换率num。问你能否转换使得自己赚钱。思路:将字符串,转换成整数,然后spfa判断正权回路#include<cstdio>#include<queue>#include<map>#include<cstring>#include<s翻译 2017-06-27 22:38:54 · 247 阅读 · 0 评论 -
【线段树区间单点更新加约束条件】Range Minimum Queries CodeChef - ANDMIN
Problem Description 给你n个数的序列,有q个操作。操作分为两种0的时候查询L,R中的最小值。1的时候对于L,R区间的每个元素进行&X的操作。思路,对所有元素进行&X的操作。就可以寻找约束条件(如果该区间所有元素进行|操作,和X进行&操作没有变化的话,就不往下递归)也就是所有元素的二进制1的集合,被X的二进制1的集合包含,那就不需要更新。#include<bits/stdc+翻译 2017-07-25 09:21:31 · 265 阅读 · 0 评论 -
【线段树区间单点更新加约束条件】HDU - 4027 Can you answer these queries?
Problem Description 给你一个n,接下来有n个数,给你m个操作,操作分为0的时候对区间L,R内的所有元素开根号,1的时候求区间L,R所有元素的和思路:因为最大的数2的63次方,开根号也就7,8次这样就为1开不了了。所以约束条件就是(判断如果该区间元素都是1的话,就不继续递归了)#include<bits/stdc++.h>using namespace std;struc翻译 2017-07-25 09:28:49 · 226 阅读 · 0 评论 -
【线段树思想】SDUT 3475 最后の汤圆
最后の汤圆 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 又到了汤圆星球一年一度的汤圆节了,恰好这一天是地球的元宵节,出于这个巧合,两球之间早在数百年前就建立起了长久稳固的友好外交关系。 良好的外交需要物质的支持,此次汤圆星球外交使者向地球朋友们进贡了上等的汤圆。汤圆星球的汤圆使者送来的n(1<=n <=翻译 2017-07-25 08:56:34 · 253 阅读 · 0 评论 -
【线段树 面积并 扫描线】HDU - 1542 Atlantis
Problem Description 输入一个n,给你n个矩阵的左下角坐标,和右上角坐标。让你求所有面积并的和。思路: 扫描线参考博客:http://www.cnblogs.com/scau20110726/archive/2013/04/12/3016765.html 博客是从下到上扫描,个人习惯从左到右扫描。我们左边扫描过来的有效长度设为len,那么线段树就是维护区间最长len翻译 2017-09-05 10:41:40 · 274 阅读 · 0 评论 -
【线段树 && 扫描线 && 面积交】HDU - 1255 覆盖的面积
Problem Dscription 给你n个矩形,每个矩形给你左下角下标和右上角下面,让你求面积交。思路: 参考博客:http://www.cnblogs.com/scau20110726/archive/2013/04/14/3020998.html,建议先做了hdu 1542再看这题。代码只是轻微的改动了而已。 线段树维护区间cover>=2的len2,cover>0的len,翻译 2017-09-05 10:54:52 · 237 阅读 · 0 评论 -
【线段树 && 扫描线 && 周长】POJ - 1177 Picture
Problem Description 给你n个矩阵,每个矩阵给你左下角和右上角的下标。让你求所有矩阵并起来后的周长。思路: 建议先做了hdu 1542再看这题因为这题线段树维护的量没那么多。比较好入门,学习扫描线什么的。这样的话,代码也是在hdu 1542的基础上改动改动而已。线段树维护有效长度len,区间整段是否有效的cover,的基础上多了 ly, lr, num这三个分别代表该区间翻译 2017-09-05 11:12:22 · 314 阅读 · 0 评论 -
【线段树维护状态转移矩阵】CodeForces - 719E Sasha and Array NOWCODER D 整数序列
Step1 Problem: 给你 n 个数代表斐波那契数列下标, m 次操作。 操作分为两种类型; 1:区间 L 到 R 加 v。 2:求区间 L 到 R 的下标对应的斐波那契数列的和。 数据范围: 1 &amp;lt;= n &amp;lt;= 100000, 1 &amp;lt;= m &amp;lt;= 100000, 1 &amp;lt;= a[i] &amp;lt翻译 2018-08-21 19:54:11 · 271 阅读 · 0 评论