线段树
EnjoyingAC
bugger,写bug爱好者。
展开
-
HDU-1166-敌兵布阵
## 题解 ## 线段树入门题,注意线段树要开四倍空间。 能用树状数组解决的线段树问题原创 2017-12-22 09:32:33 · 211 阅读 · 0 评论 -
HDU1540 Tunnel Warfare (求包含第k位的最大连续区间)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1540 题目 During the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast areas of north China Plain. Generally speak...原创 2018-05-31 11:28:13 · 199 阅读 · 0 评论 -
HDU3974 Assign the task (修改子树对应到区间修改)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3974 题目 There is a company that has N employees(numbered from 1 to N),every employee in the company has a immediate boss (except for the leader of who...原创 2018-05-31 16:36:43 · 324 阅读 · 0 评论 -
POJ3264 Balanced Lineup (区间查询最大值、最小值)
题目链接 http://poj.org/problem?id=3264 给你一个长度为n的序列a[N] (1 ≤ N ≤ 50000),询问Q(1 ≤ Q ≤ 200000) 次,每次输出[L, R]区间最大值与最小值的差是多少。 Input 多组用例 第一行是两个整数 N,Q 然后是N个数a[i] 保证a[i] 都小于1e9 然后是Q个询问 每次给你L,R 保证(1<=L&l...原创 2018-05-31 21:25:10 · 347 阅读 · 0 评论 -
FZU2297 Number theory (线段树单点修改、区间查询)
题意 初始x=1,下面有Q次操作。 操作M yi:x=x*yi 操作N di:x=x/ydi 每次操作后都输出x的值。保证每次di的值都不一样。 分析 考虑暴力维护: 用一个数组y[Q+1]记录每个yi的值,初始化yi的值都为1。对于操作M yi,将第i个值改为yi。对于操作N di,将第di个值除以ydi,因为每次di的值都不一样,故除以ydi后的ydi的值为1。每次都输出y[1]...原创 2018-06-25 09:26:52 · 542 阅读 · 0 评论 -
HDU1542 Atlantis (矩形面积并,扫描线+离散化+线段树)
题意 给定n个矩形的左下坐标和右上坐标。求这n个矩形的面积的并集。 解题 扫描线: 这个还是很好理解的。n个矩形有2n条分割线,从下到上扫描,每次扫描到分割线都累加一次面积。即通过分割线将矩形并分成2n-1割图形。 离散化: 每次累加面积是通过两条分割线的高度差*被覆盖的区间长度完成的。所以我们要维护这个被覆盖的区间。因为x坐标的值达到了1e5的数量级,而矩形的数量级才1e2.故对x坐...原创 2018-06-18 10:23:38 · 304 阅读 · 0 评论 -
HDU 1255 覆盖的面积 (矩形面积并变形)
解题 求覆盖至少两次的面积。 用sum表示被覆盖至少一次的长度,用ss表示被覆盖至少两次的长度。这题与hdu1542的区别就在于更新ss。 首先像hdu1542那样去更新sum(因为需要用到sum去更新ss)。 根据该区间被完全覆盖的次数来更新ss: 如果add大于1,那么ss等于整个区间。 如果add等于1,那么ss等于左子树的sum值加右子树的sum值。(因为该区间被完全覆盖一次,...原创 2018-06-18 11:33:52 · 187 阅读 · 0 评论 -
2018多校赛第二场 Naive Operations (线段树+思维)
题意 初始化a数组都为0,b数组的值为一个固定的排列数。 然后有两个操作: add l r:将a数组[l,r]的值都加1. query l r:查询区间[l,r]累加和下取整(ai/bi)。 解题 题目出得这么像线段树,那么不妨往线段树方面想。 用线段树维护区间信息sum和c,sum表示下取整之和,c表示这个区间最少需要经过多少次add操作才会导致sum的值加1. 并用一个lazy...原创 2018-07-27 21:20:20 · 230 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number 权值线段树
题意 给定一个排列. 将该排列的第一个数移动到最后面,重复n-1次,形成总共n个排列。 问哪个排列中所含逆序对最少,输出最少逆序对数。 题解 求逆序对有很多种方法,O(n^2)的暴力,O(nlogn)的树状数组、归并排序等。 这里,采用的是权值线段树。 所谓权值线段树,就是用数值去建立线段树,每个结点所代表的区间[l,r]维护的是值在[l,r]中出现的次数。 这样,每插入一个值x,...原创 2018-08-12 19:51:09 · 211 阅读 · 0 评论 -
HDU4027 Can you answer these queries? (伪区间修改、实单点修改、区间开平方根修改)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4027 题目 A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use our secret weapon to eliminate the battles...原创 2018-05-30 17:39:30 · 300 阅读 · 0 评论 -
ZOJ1610 Count the Colors(计数能看到的不同颜色段及段数)
题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610 题目 Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones. You...原创 2018-05-30 16:28:22 · 258 阅读 · 0 评论 -
HDU-1754-I Hate It
线段树单点更新,区间查询问题。 树状数组单点更新,区间查询问题。原创 2017-12-22 11:07:33 · 170 阅读 · 0 评论 -
POJ3468 A Simple Problem with Integers
给定由N个整数组成的序列。 对这个序列进行如下两种操作: (1)Q a b:输出序列第a个元素到第b个元素的和,下标从1开始,包括第a个和第b个 (2)C a b c:对序列第a个元素到第b个元素的所有元素都累加c题解线段树区间更新,区间查询问题。 线段树原理:每一个节点代表一个区间上的信息,对区间进行修改,即对若干个对原创 2017-12-22 15:52:09 · 179 阅读 · 0 评论 -
HDU1698 Just a Hook(线段树区间更新、区间查询)
题意:在 DotA 游戏中,帕吉的肉钩是很多英雄最害怕的东西。钩子由连续若干段的等长金属棒制成。现在帕吉对钩子由一些操作:我们将金属棒 1~n 依次编号,帕吉可以把编号 x~y 的金属棒变成铜棒、银棒、金棒。每段铜棒的价值是 1;每段银棒的价值是 2;每段金棒的价值是 3。肉钩的总价值是 n 段金属棒价原创 2017-12-22 18:37:14 · 329 阅读 · 0 评论 -
基于边权的树链剖分+线段树维护单点修改、区间查询最大值 SPOJ - QTREE
题目链接 SPOJ - QTREE 题目 You are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, 3…N-1. We will ask you to perfrom some instructions of the following form: ...原创 2018-05-23 21:10:31 · 324 阅读 · 0 评论 -
线段树小结
基本概念 线段树是一颗二叉树,每一个结点维护一段区间。因为是二叉树,所以可以用p*2表示p的左儿子,p*2+1表示p的右儿子。 struct node { int l,r;//结点所维护的区间 int num;//区间信息 }T[maxn&amp;lt;&amp;lt;2];//线段树要开四倍空间 建树 给定长度为n的数组a(下标从1开始)。 对区间[1,n]上的值建一颗线段树。 ...原创 2018-05-24 20:42:04 · 143 阅读 · 0 评论 -
基于点权的树链剖分+线段树区间合并 HYSBZ - 2243 染色
题目链接 HYSBZ - 2243 题目 给定一棵有n个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段), 如“112221”由3段组成:“11”、“222”和“1”。 请你写一个程序依次完成这m个操作。 Input 第一行包含2个整数n和m,分别表示节点数和操作数; 第...原创 2018-05-24 19:29:40 · 184 阅读 · 0 评论 -
POJ3667 Hotel (找连续k个空位)
题目链接 http://poj.org/problem?id=3667 题目 火山经营着一个停车场,假设的停车场有N车位(编号1-N)都在一条线上,最初所有车位都没停车。经常有人来定车位, 他要定连续的k(1 ≤ k ≤ N)个车位。火山要确定是否能够满足客人的要求,如果能,他要将这k个连续的车位安排在编 号最小的地方停下。若不能,则客人不停在火山的停车场。在某一时间,有些车会被车主开走...原创 2018-05-29 22:30:12 · 221 阅读 · 0 评论 -
POJ2528 Mayor's posters(区间更新、暴力统计叶子结点、离散化)
题目链接 http://poj.org/problem?id=2528 题目 n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) 。求出最后还能看见多少张海报。 Input 第一行: 样例个数T 第二行: 贴海报的人n 第三行: 每个人贴海报的范围 ...原创 2018-05-30 09:40:28 · 216 阅读 · 0 评论 -
51nod 1307 绳子与重物 (树链剖分、并查集、线段树)
题目链接 https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1307 题意 题解 树链剖分暴力莽。 将每根绳子的承重对应到点的值上。每挂一根绳子,该绳子对应的点到“最上面的点”的值都减w[i]。当这个区间上的点的最小值小于0了,那么绳子就会断。 显然就可以用树链剖分将路径对应到区间,用线段树维护区间修改...原创 2018-09-11 23:17:42 · 253 阅读 · 0 评论