![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论——线段树
文章平均质量分 85
倚剑笑紅尘
教练,我想学kaldi!
展开
-
HDU 1166 敌兵布阵(线段树)(第一部分 单点更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166题目大意:有n个营地 然后给出每个营地的人数接下来每行有一条命令,命令有4种形式: (1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) (2)Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30); (3)Query i原创 2017-07-14 11:55:16 · 171 阅读 · 0 评论 -
hdu1542线段树+离散化+扫描线详解
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542题目大意:给出一些矩形的左下角和右上角的坐标 求最后总的覆盖面积思路:一:变量的解释。struct Seg{ double h , l , r; int s; Seg(){} Seg(double a,double b,double c,int d) : l(原创 2017-07-16 19:29:36 · 444 阅读 · 2 评论 -
hdu1255 覆盖的面积(线段树+离散化+扫描线)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255题目:可以参考hdu1542 http://blog.csdn.net/qq_36782366/article/details/752091191542是求整体的面积,此题是求重叠的面积,其实主要该一些细节点就可以直接提交了首先update函数中 ,要一直更新到叶节点为止!!原创 2017-07-17 09:57:56 · 314 阅读 · 0 评论 -
hdu3265Posters(线段树+离散化+扫描线详解 )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3265此题是hdu1542求面积的变形,没做过的可以看下我之前写的博客 :http://blog.csdn.net/qq_36782366/article/details/75209119题目:现在有一些海报,但是这些海报中有一个矩形的洞n张海报,给出海报以及每张海报上矩形洞的左下角和右原创 2017-07-17 11:10:48 · 410 阅读 · 0 评论 -
poj2482Stars in Your Window(线段树+扫描线+离散化)
题目链接:http://poj.org/problem?id=2482链接题目大意:给出n个星星的坐标,每个星星有一个亮度,给出一个矩形的长和宽,问矩形能包括的星星的最大亮度和(不包括边框)。思路:假设每个星星都是矩形的最左下点,那么每一个星星都可以得到一个矩形,(x,y)->(x,y,x+w,y+h)这里的亮度相当于下边和上边的值不是1和-1而是c和-c左右两边即使出现在边界原创 2017-07-17 22:04:15 · 1114 阅读 · 0 评论 -
poj 1436 Horizontally Visible Segments(线段树)(第二部分成段更新 不需要延迟标记 )
题目链接:http://poj.org/problem?id=1436题目大意:输入n表示有n条线段,n行每行输入y1,y2,x表示线段的下端点,上端点以及线段的位置(横坐标位置),对于第i条线段和第k条线段如果用一条平行线能够经过它们并且在它们之间不经过其他线段,则称这两条线段互为可见,求有多少3条线段两两可见思路:思路:对y轴进行建树,对每条线段按横轴从小到大排序,原创 2017-07-15 10:24:51 · 233 阅读 · 0 评论 -
zoj 1610 Count the Colors(线段树)(成段更新染色)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610题意:对一段区间进行涂色,问最后每一种可见的颜色共占多少个不连续的区间。方法:线段树+延迟标志思路:这到题目的关键一点是区间不能取闭区间,根据题意,为了方便可以取左开右闭,而且要搞明白涂色的是区间而不是点,因此根据线段树不能一步得到结果,我原创 2017-07-14 19:42:30 · 304 阅读 · 0 评论 -
Codeforces Round #426 (Div. 2) D. The Bakery(DP+线段树维护)
题目链接给一个序列,要求把序列划分成k段,每一段里的权值是这一段里不同数字的个数。求如何划分使得k个区间的权值和最大。 我们容易想到dp[i][j]代表前j个分为i段时的最大值dp[i][j] = dp[i-1][k] + size(k+1 , j) ( i-1<=k<j ) //size(a,b)表示a到b这个区间里有多少个不同数字显然这是一题用线段树维护的二维d原创 2017-08-21 11:28:52 · 255 阅读 · 0 评论 -
Codeforces 343D Water Tree 题解&代码
题意:首先给出一棵树,这棵树的结点有两种状态,要么空要么有水,然后给出若干的操作1 x 将x以及x的子孙灌水2 x 将x以及x的祖先清空3 x 查询x结点的状态思路:其实是树剖QwQ不过个人感觉和线段树还是很像的…所以树剖的本质大约就是dfs序+线段树?in[]记录节点的节点的dfs编号 out[]记录节点的控制范围 (in[i]pos[i]记录i节点的父原创 2017-08-07 15:34:03 · 282 阅读 · 0 评论 -
Codecraft-18 and Codeforces Round #458 D. Bash and a Tough Math Puzzle(线段树)
题目链接:点击打开链接题目大意:给出一个数列a:a1,a2,a3......an有两种询问:第一种:1 l r x 意思是在数列a的[l,r]的区间中,如果在最多改变一个数字的情况(不是真的改变,只是假设改变的话),这些数字的公约数能被x整除则输出YES,否则输出NO。第二种:2 i y将数列a中的ai的值改为y思路:典型的线段树的题,单点更新。首先叶子结点记录的就是这个数列,然后父节点是他两...原创 2018-03-01 21:25:03 · 131 阅读 · 0 评论 -
hdu 1754 I Hate It (线段树)(第一部分 单点更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754题目大意:给出n个人的成绩有两个操作:当C为'Q'的时候,表示这是一条询问操作,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。当C为'U'的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。思路:简单的线段树问题 只是将子节点向父节点原创 2017-07-21 13:07:38 · 153 阅读 · 0 评论 -
hdu 1698 Just a Hook (线段树)(第二部分 成段更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698题目大意: 在data中 一位英雄“屠夫”有个钩子,是由几段金属棒构成的,其中金属棒可以分为铜棒其val为1,银棒其val为2,金棒其val为3,其中屠夫的钩子其金属棒的初始值为1,屠夫想要进行一些操作,来改变一些区间的金属棒的val值。其改变的性质是从x->y区间的所有金属原创 2017-07-21 13:07:05 · 197 阅读 · 0 评论 -
hdu 3642 求长方体的体积交 (线段树 +离散化+扫描线)(重点!模板!)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3642题目大意:给出n个长方体对角的两个坐标 求长方体三个重叠的体积 (求体积交)思路:建议按顺序先做下hdu1542 求平面n个矩形的面积并 hdu1255 求平面n个矩形的面积交一:总体的思路本题的主要思路是将x轴和z轴离散化,然后对于z轴每个扫描线,求当前高度原创 2017-07-17 16:04:22 · 533 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers(线段树)(第二部分 成段更新,区间求和)
题目链接:http://poj.org/problem?id=3468题目大意:给出n个数的数值Q是对区间a,b的求和C是对区间a,b内的所有数都加上c思路:成段更新,需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or询问到的时候#include#include#include#include#inc原创 2017-07-14 15:20:51 · 274 阅读 · 0 评论 -
poj 2528Mayor's posters(线段树)(第二部分成段更新 离散化)
题目链接;http://poj.org/problem?id=2528题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报思路:这题数据范围很大,直接搞超时+超内存,需要离散化:离散化简单的来说就是只取我们需要的值来用,比如说区间[1000,2000],[1990,2012] 我们用不到[-∞,999][1001,1989][1991,1999][2001,2011][2013原创 2017-07-14 17:04:52 · 161 阅读 · 0 评论 -
hdu 4027 Can you answer these queries?(线段树)(单点更新 但需要标记记录剪枝)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4027题目大意:给定100000个数,两种操作,0 i j表示将i j这段的数字都开根号(向下取整),1 i j表示查询i j之间的所有值的和。。。(所有的和都不超过64位)..(用long long)思路:因为是开根号,所以是要查询到叶节点对叶节点进行开根号处理这里需要用到开个数组记录,如原创 2017-07-14 23:00:37 · 208 阅读 · 0 评论 -
POJ 3667 hotel (线段树)(第三部分 区间合并)
题目链接:http://poj.org/problem?id=3667题目大意:参考样例,第一行输入n,m ,n代表有n个房间,编号为1---n,开始都为空房,m表示以下有m行操作,以下 每行先输入一个数 op ,表示一种操作:若op为1,表示查询房间,再输入一个数a,表示在1--n 房间中找到长度为a的连续空房,输出连续a个房间中左端的房间号,尽量让这个房间号最小,若找不到长原创 2017-07-15 12:15:31 · 194 阅读 · 0 评论 -
hdu 3308 LCIS(线段树)(第三部分 区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308题目大意:给你n个数,m个操作。操作有两种:1.U x y 将数组第x位变为y 2. Q x y 问数组第x位到第y位连续最长子序列的长度。对于每次询问,输出一个答案思路:一:存线段树数据的数组要有四个变量。lsum 存的是从本节点区间最左端开原创 2017-07-15 16:17:47 · 203 阅读 · 0 评论 -
hdu 1540 Tunnel Warfare(线段树)(第三部分 区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1540题目大意:D a代表破坏村庄a;R代表修复最后被破坏的那个村庄;Q代表询问包括x在内的最大连续区间是多少;思路:一:存线段树数据的数组要有四个变量。lsum 存的是从本节点区间最左端开始(向右)一共有多少个连续的空房间rlsum 存的是 从本节点区间最右端开始(原创 2017-07-15 21:10:00 · 183 阅读 · 0 评论 -
HDU 4614Vases and Flowers(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4614题目意思:每一组的第一行有两个数n,m, n表示花瓶数量0~n-1,开始全为空,接下来有m组,每组有数k,a,b;当k=1时, 从a位置开始插花,b为花数量,当花瓶有花时,跳过当前,直到找到空花瓶再插入,输出插入第一支花的位置和最后一支花的位置,花可以没插完,当一支都没有插入则输出Can原创 2017-07-16 11:45:06 · 348 阅读 · 0 评论 -
HDU4553:约会安排(线段树)(第三部分 区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4553题目大意:查找是否有连续的空余时间他的操作有三个 :ds x 查找屌丝的时间有连续的x长度的空余时间ns x 为女神安排时间,先查找屌丝时间是否有空余,没有的话无视屌丝,直接判断女神时间是否有连续x长的空余时间stduy a b 清空a到b区间的事情思路:一:原创 2017-07-16 15:46:38 · 556 阅读 · 0 评论 -
hdu 1828 Picture (线段树+扫描线)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1828题目大意:给出n个矩形的左下角和右上角的坐标 问最后组成的那个图形的周长思路:可以浏览hdu1542在来做此题以x轴建立线段树 从y轴小往大进行扫描 一:一些变量的介绍。struct Seg{ int l , r , h , s; Seg() {} S原创 2017-07-16 20:52:24 · 267 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 G Lpl and Energy-saving Lamps(线段树)
链接:https://nanti.jisuanke.com/t/30996题意:有n个房间,每个房间有a[i]个灯泡需要被替换。工作人员一开始有m个替换灯泡,并且每个月再增加m个。有q组询问,问每个月已经替换完成的房间数和灯泡剩余的量。注意:只有替换灯泡数大于房间内的灯泡数才可以替换,每次从左到右替换、当所有房间都被替换完之后或者这个月的灯泡数不够了即结束。思路:我们可以直接用线段...原创 2018-09-02 16:00:40 · 335 阅读 · 2 评论