线段树
文章平均质量分 83
cillyb
这个作者很懒,什么都没留下…
展开
-
ZOJ 1610 Count the Colors(线段树 区间覆盖)
题目地址:点击打开链接题意:在一条长度为8000的线段上染色,每次把区间[a,b]染成c颜色。显然,后面染上去的颜色会覆盖掉之前的颜色。求染完之后,每个颜色在线段上有多少个间断的区间。思路:区间问题用线段树,成段的延迟更新区间,最后把所有的区间下压到叶子结点,统计叶子结点的颜色。代码:#include#include#includeusin原创 2017-03-14 22:36:02 · 382 阅读 · 0 评论 -
HDU 6162 Ch’s gift(树链剖分+线段树)
题意:给你一颗树,每个节点有一个值,q次询问,每次询问u到v的路径上节点权值在a至b的节点的权值和。n,q思路:可以离线处理,分别求出路径中代码:#includeusing namespace std;typedef long long ll;const int maxn = 1e5+5;int deep[maxn], fa[maxn], top[maxn]原创 2017-08-22 20:45:19 · 736 阅读 · 0 评论 -
CodeForces 343D Water Tree(dfs序 线段树)
题意:给你一颗n个节点的树,1为根,初始时所有节点都为0,有三种操作:1 x :将x及其子树的所有节点都变为12 x :将x及其祖先都变为03 x :查询x的值思路:可以先求出dfs序,对于操作1,我们可以用线段树区间更新in[x]至out[x];对于操作2,需要更新它及其祖先,不太好操作,我们可以只将x变为0,这样对于操作3,我们可以查找其子树最小值,如果是0就代表它原创 2017-08-07 00:23:50 · 448 阅读 · 0 评论 -
HDU 5861 Road (线段树区间设值)
题意:一条线段上n个点将线段分成n-1份,点的编号从左往右1~n,每条路你只能打开一次,打开后每天都收费,打开后你可以关上,但是关上后这条路就再也不能打开了。每条路还有一个花费,q次询问,每次询问给你一个区间,表示你需要从区间左端点走到右端点,要求走的路都是打开的,然后问你在保证你能过去的情况下,每天的最小花费。题意:我们可以想到求出每条路的第一次用的时间和最后一次用的时间原创 2017-09-13 09:06:03 · 319 阅读 · 0 评论 -
Educational Codeforces Round 23 F. MEX Queries(线段树区间设值)
题意:一个无限长的序列,q次操作,有三种操作:1 l r : 将区间[l, r]设为12 l r : 将区间[l, r]设为03 l r : 将区间[l, r]的数反转(0变1, 1变0)每次操作后输出最小的为0的位置下标(q 思路:前两个操作就是基础的线段数区间设置操作,关键是操作3怎么实现,线段树每个节点维护的是区间和,如果我们将它的区间反转,那和就变成了区间长原创 2017-10-08 13:27:04 · 486 阅读 · 0 评论 -
HDU 5029 Relief grain(树链剖分+线段树)
题意:给你一颗n个节点的树,现在执行m次操作,每次操作[a, b, k]表示a到b的路径上的所有点都加上一个颜色k。m次操作之后输出每个点的出现次数最多的那个颜色(若有多个颜色输出值最小的)。n, m, k 思路:我们可以先把他想成在区间上执行操作,这样题意就变成了:一个区间[1, n],m次操作[a, b, k],表示a-b区间每个节点添加一个颜色k,mci曹组后输出n个数,原创 2017-10-03 16:14:57 · 480 阅读 · 0 评论 -
BZOJ 2482 || SPOJ GSS2 Can you answer these queries II(线段树 离线 后缀和)
题意:给定n个元素的序列,给出m个询问:求l[i]~r[i]的最大子段和(可选空子段)。 这个最大子段和有点特殊:一个数字在一段中出现了两次只算一次。 比如:1,2,3,2,2,2出现了3次,但只算一次,于是这个序列的和是1+2+3=6。(n, m, |a[i]|)原创 2017-10-03 19:14:04 · 403 阅读 · 0 评论 -
HDU 6183 Color it(线段树 动态开点)
题意:有④种操作:①1 x y c表示在(x, y)点染上颜色c;②2 X y1 y2表示查询在(1, y1)到(X, y2)范围内有多少种不同的颜色;③0表示清屏;④3表示程序退出(0思路:因为只有50种颜色,所以我们可以分别考虑每个颜色,x轴每次都是询问的[1,x],所以我们开50棵线段树,对于每种颜色维护每个y坐标的最小x,查询的时候就是区间查询[y1,y2]的最小x是否小于原创 2017-10-05 14:02:39 · 627 阅读 · 0 评论 -
51nod 1463 找朋友(线段树 离线)
给定:两个长度为n的数列A 、B一个有m个元素的集合K询问Q次每次询问[l,r],输出区间内满足|Bi-Bj|∈K 的最大Ai+Aj数据约定:n,Qm 011保证B[i]互不相等思路:我们按询问的右端点排序,每次把代码:#includeusing n原创 2017-10-27 22:22:59 · 343 阅读 · 0 评论 -
HDU 5023 A Corrupt Mayor's Performance Art (线段树 位运算)
题意:长度为n的数组,每个点的颜色开始都是2,然后q次操作,操作1是把[L,R] 区间的颜色变成某个值C, 第二种是查询[L,R] 区间存在哪些颜色,并把颜色的编号输出( 按照字典序).(N思路:因为C代码:#includeusing namespace std;const int maxn = 1e6+5;int tree[maxn*4], lazy[maxn*原创 2017-10-11 20:01:49 · 337 阅读 · 0 评论 -
HDU 6070 Dirt Ratio(二分+线段树)
题意:给你一个长度为n的数组,让你求size(l, r)/(r-l+1)的最小值。[l, r]是给定数组一个子序列,size(l, r)的值为这个区间的不同数的个数。(n 官方题解:二分答案midmid,检验是否存在一个区间满足\frac{size(l,r)}{r-l+1}\leq midr−l+1size(l,r)≤mid,也就是size(l,r)+mid×原创 2017-10-13 16:31:14 · 523 阅读 · 0 评论 -
BZOJ 4552 排序(二分 || 线段树合并)
题意:对一个1~n的全排列, 进行m次局部排序(0, l, r)将区间[l, r]数字升序排列(1, l, r)将区间[l, r]数字降序排列仅一次询问, 询问m次局部排序后第q位置上的数字1 ≤ n, m, q ≤ 1e5思路:这题有个神奇的做法,我们可以直接二分答案x,然后把大于等于x的都看作1,比x小的都看作0插入线段树中,然后执行m个询问,因为数组中原创 2017-08-12 00:59:01 · 1005 阅读 · 0 评论 -
BZOJ 4756 Promotion Counting(线段树合并 || dfs)
题意:给你一棵n个节点的树,根为1,问你每个节点,它的子树中有几个节点比它大。思路:有一个简单的方法是可以遍历一下这棵树,树状数组维护,对于每个点的答案为 子树节点个数-(遍历它后比它小的数的个数-遍历它前比它小的数的个数)。遍历完它的子树节点后把它插入树状数组。还有一个方法是对于每个节点建立一颗权值线段树,然后自底向上合并,每次合并后就可以直接查找比它大的数的个数,因原创 2017-08-12 00:46:14 · 502 阅读 · 0 评论 -
HDU 4027 Can you answer these queries? (线段树 区间更新)
题目地址:点击打开链接题意:给定100000个数,两种操作,0 i j表示将i j这段的数字都开根号(向下取整),1 i j表示查询i j之间的所有值的和(所有的和都不超过64位)思路:我们可以很容易的发现,一个数k(k也是1,也就是说当一个数为1的时候,我们没有必要对它进行操作和更新;而且一个很大的数仅仅经过6,7次就可以变成1;所以到这里我们原创 2017-03-14 22:43:52 · 407 阅读 · 0 评论 -
POJ 2182 Lost Cows (树状数组+二分 / 线段树 / 枚举)
给出n和每个数之前比它小的数有几个 需要输出原序列,最后一个数的真实值为a[N]+1将a[N]+1在序列中删去,更新a[i],那么第N-1个数的真实值为a[N-1]+1。做法很多,线段树,树状数组加二分或是枚举都可以。线段树代码:#include#include#includeusing namespace std;const int maxn原创 2017-03-14 23:38:08 · 927 阅读 · 0 评论 -
POJ 3368 Frequent values(RMQ/线段树区间合并)
题目地址:点击打开链接题意:给定一个数组,其中的元素满足非递减顺序,要求对于一对起点和终点,回答出其中某个元素重复出现的最大次数。思路:由于原数列已经排好序,所以相同的数字一定是在一起的。我们可以O(n)扫描一遍,算出每一个位置上的数字num是从左起第几个num,记为num[i] 如样例,扫描后如下,括号内是num数组值 -1(1) -原创 2017-03-16 00:40:53 · 581 阅读 · 0 评论 -
POJ 3264 Balanced Lineup (区间最值 RMQ模板/线段树)
题目地址:点击打开链接区间最值查询,RMQ和线段树都可以。RMQ代码:#include#include#include#includeusing namespace std;const int maxn = 5e4+5;const int maxm = 25;int dpMax[maxn][maxm], dpMin[maxn][maxm], n, m;原创 2017-03-15 23:29:40 · 479 阅读 · 0 评论 -
codevs 3289 花匠 (dp + 线段树)
题目描述 Description花匠栋栋种了一排花,每株花都有自己的高度。花儿越长越大,也越来越挤。栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花排列得比较别致。具体而言,栋栋的花的高度可以看成一列整数h_1, h_2, … , h_n。设当一部分花被移走后,剩下的花的高度依次为g_1, g_2, … , g_m,则栋栋希望下面两个条原创 2017-04-19 21:03:09 · 375 阅读 · 0 评论 -
HDU 1556 Color the ball(线段树区间更新区间查询模板)
Problem DescriptionN个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a Input每个测试实例第一行为一个整数N,(N 当N = 0,输入结束。 Output每个测试实例输出一行,包括N个整数,第I个数代表第I个气球总共被涂色的次数。 Sample Input31 12原创 2017-05-04 13:47:51 · 476 阅读 · 0 评论 -
SDUT 2880 Devour Magic(线段树lazy和set标记模板)
题意:给你一个1~n的区间,每过一个单位时间区间值加一现在有一个操作 t l r 表示在t时间把 l到r这个区间的的值累加到ans,然后把这段区间清零思路:以前没做过把一段区间置为某个数的题,涨姿势了,可以和lazy标记类似做一个set标记。#include#include#include#includeusing namespace std;typede原创 2017-05-04 14:50:42 · 601 阅读 · 2 评论 -
2017 华东师范大学网赛 F.丽娃河的狼人传说( 贪心)
题意:方便起见,丽娃河可以看成是从 1 到 n 的一条数轴。为了美观,路灯只能安装在整数点上,每个整数点只能安装一盏路灯。经专业勘测,有 m 个区间特别容易发生事故,所以至少要安装一定数量的路灯,请问至少还要安装多少路灯。思路:按右端点排序,然后缺的路灯尽量往后放,这题数据很弱,暴力也可以过。。。比赛的时候智障了,-1的时候没有输出Case #,wa了半天。暴力代码:#incl原创 2017-05-14 17:32:15 · 453 阅读 · 0 评论 -
Codeforces 35E Parade(扫描线 线段树||STL)
题意:给定n个底边均在X轴上的矩形, 输出矩形覆盖后的所有转折点 1 ≤ n ≤ 1e5, 1 ≤ hi ≤ 1e9, - 1e9 ≤ li 思路:将每个矩形拆成(l, h)和(r, -h),排序后如果高度是正数,就加入数据结构中,如果是负数,就从数据结构中删除他的相反数,每次高度发生变化是记录答案,注意下x相同时要取一个最大的。这里数据结构可以用线段树,也可以用STL中的mul原创 2017-08-11 23:49:45 · 456 阅读 · 0 评论 -
BZOJ 2212 & POI 18 Tree Rotations(线段树合并)
题意:给定一棵2n-1个节点的二叉树, 每个叶子上有1~n的数字, 保证每个数字出现且仅出现一次 允许任意次交换某两棵兄弟子树 对交换完毕的树求先序遍历, 形成1~n的一个排列 求这个排列最小的逆序对个数 1 ≤ n ≤ 2 * 1e5 (1e6)思路:子树x内的逆序对个数为 :x 左子树内的逆序对个数 + x 右子树内的逆序对个数 + 跨越 x 左子树与右原创 2017-08-12 00:23:37 · 464 阅读 · 0 评论 -
PAT 1101. Quick Sort (25)
题意:给你一个长度为n的数组,问你有几个数满足左边的都比它小,右边的都比它大,并输出他们。思路:自从11月退役后好久好久没做题了。。不会做题了,,这么水的题,只要找到每个数左边的最大值和右边的最小值跟自己比较一下就行了,我上来居然想到用线段树、、、、其实从头和从尾巴扫一遍记录下最值就可以了。。。代码:#include<iostream>#include<cstdio>#...原创 2018-03-07 20:03:55 · 331 阅读 · 0 评论