线段树
画船听雨
和梦想谈一次恋爱,也要疯狂,也要坚持
展开
-
POJ 2582 Mayor's posters 线段树入门题+离散化
本来线段树就学的不扎实,后来个什么离散化,乱乱的啊、、后来看了一人写的,用结构体记录的方法进行离散化。感觉写的挺好的。题意很简单:就是在一堵墙上涂色,然后输出你能看到的颜色的种类。离散化+涂色问题。Mayor's postersTime Limit: 1000MS Memory Limit: 65536KTotal Submissions:原创 2014-02-20 16:55:20 · 1060 阅读 · 0 评论 -
codeforces 101 B. Buses
这个题目不错,但是一开始算数的时候竟然少算了一种情况导致,思路上跑偏了啊。题目大意:给你n,m。m代表的是你有m中bus,每种bus只能从si走到ti,问你从0点到达n点可以有多少种方案可以选择。注意人只能坐车不可以走。对于点ti来说,所有的方案就是前面的si到ti-1方案的和。这样就很简单了啊,但是数据很大需要离散化之后用线段树去维护这个区间的更新,就是需要求前面的和。对于线段树竟然原创 2014-11-18 23:50:49 · 1303 阅读 · 0 评论 -
HDU 4973 A simple simulation problem.(线段树)
题目大意:D表示在区间x,y内所有的元素扩充一倍;Q表示查询在这个下表以内的数字最多的个数为多少。如:1,2,3.D 1 3 之后就变成了 1 1 2 2 3 3.Q 1 4 输出 2.解题思路:每个节点记录两个信息:最大值的个数以及这个点一共有多少个数字。A simple simulation problem.Time Limit: 10000/5000 MS (Java/O原创 2014-08-29 21:37:31 · 1149 阅读 · 0 评论 -
POJ 1177 Picture(扫描线求周长)
与求面积并的差不多,但是这个与扫描的方向相同的情况不太好处理,如果扫描线离散化两次扫两遍其实也可以解决这个问题,但是这样无论在时间还是空间上稍微就有点浪费了啊。这里因为我是离散x坐标的所以对于平行于y轴的方向上的统计比较难统计。处理的方法是:标记区间左边的断点,和右边的断点,求出这个区间一共有多少个断点。就可以统计出平行于y轴的长度了。这里合并的时候需要判断右边的左区间和左边的右区间是否相同,如果原创 2014-08-08 20:46:56 · 1078 阅读 · 0 评论 -
POJ 1151 HDU 1542 Atlantis(扫描线)
题目大意就是:去一个地方探险,然后给你一些地图描述这个地方,每个描述是一个矩形的右下角和左上角。地图有些地方是重叠的,所以让你求出被描述的地方的总面积。扫描线的第一道题,想了又想,啸爷还给我讲了讲,终于有点理解了啊。先说扫描线:书上说扫描线不是一个物体,而是一个概念。在计算几何中的作用类似于图论中的bfs与dfs。所以还是需要多做题目来体会一下啊。这道题目的做法是:离散化x坐标,然后按原创 2014-08-07 10:26:41 · 1090 阅读 · 2 评论 -
HDU 4893 Wow! Such Sequence!(线段树)
很典型的线段树,注意就是一个数字如果变成了斐波那契数字之后如果在change的话,它是不会反生改变的,因为最近的斐波那契数字就是它本身了啊。用一个flag表示这一段上的数字是否change过,如果flag == 1已经change过,就不会在向下更新。否则的话就进行更新,最后会到达一个节点,更新这个节点。这里用暴力更新就行,找到最近的斐波那契数字。Add就是一个点更新,sum求和就是一个区原创 2014-07-30 08:31:08 · 960 阅读 · 0 评论 -
HDU 4902 Nice boat(线段树)
多校中的线段树,看题解出题人的意思这道题目应该不简单。但是好像数据比较弱啊。竟然可以水过去啊、、、用一个标记,标记当前这一段是否被更新过,如果更新过就为1,否则为0。一定要注意最后一个空格输出。Nice boatTime Limit: 30000/15000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot原创 2014-08-01 09:45:15 · 1145 阅读 · 4 评论 -
HDU 1754 I Hate It 线段树入门
线段树的建立与动态的更新和查询。在这里说一下啊,由于输入写的不对,一直RE,以后得注意一下,ctrl+Z一定得直接退出啊。I Hate ItTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 31303 Accep原创 2014-02-20 14:22:57 · 809 阅读 · 0 评论 -
HDU 1166 敌兵布阵 线段树入门题目
跟HDU1754 差不多,就是线段树的动态修改,与查询。敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34753 Accepted Submission(s): 14770Problem原创 2014-02-20 17:09:56 · 939 阅读 · 0 评论 -
HDU 1556 Color the ball 线段树入门题
典型的线段树,区间的更新,统计区间内元素的和。Color the ballTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7031 Accepted Submission(s): 3668Probl原创 2014-02-20 10:28:39 · 888 阅读 · 0 评论 -
学习笔记——线段树算法学习
这是从网上看到的两篇博客感觉挺好的就转过来,留作复习的材料。转载来源:http://www.cnblogs.com/superbin/archive/2010/08/02/1790467.html线段树(interval tree) 是把区间逐次二分得到的一树状结构,它反映了包括归并排序在内的很多分治算法的问题求解方式。 上图是一棵典型的线段树,它对区间[1转载 2014-02-19 19:54:24 · 1414 阅读 · 0 评论 -
POJ 3264 Balanced Lineup 线段树入门(点的查找)
这道题的意思是:给你n个点,每个数出现的位置对应着改点数的大小。然后给出m个区间输出每个区间上的最大值与最小值的差。典型的线段树啊,自己写的那个代码很搓,然后啸爷教了我,他怎么写的,就学习了一下。以后尽量写的好一点啊。主要是线段树的建立与查找。Balanced LineupTime Limit: 5000MS Memory Limit: 65536K原创 2014-02-20 08:49:17 · 927 阅读 · 0 评论 -
POJ 2777 Count Color 线段树入门题
今天开始看的线段树,感觉树存储的优势了啊,很强大、时间复杂度降低了很多啊。在这里先说一下题目的大体意思是:给区间进行染色,后染的颜色会会覆盖掉之前染过的颜色,然后输入C是代表给区间(a,b)染色成c。P代表输出区间(a,b)一共有几种颜色。典型的线段树的创建、修改、与查询问题啊。所以要用线段树来做啊、否则会超时的啊,我好像跑了969ms,有点龟速了啊,但是重点是学习算法,优化以后熟悉了再说原创 2014-02-19 20:06:16 · 929 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers(线段树区间操作)
题目的意思很简单就是一个线段树的区间的增加数字,与区间的查询。说一下,区间操作的题目第一次做啊,我瞎搞了一下,超时了啊。于是求助于啸爷,啸爷又是“苦心教导”啊。。感激不近啊。。一个区间当有更新的时候,先把区间上的总和更新一下,然后标记一下更新的多少,然后如果以后还会找到这个区间的时候,要把他所标记的那个数字传到他的左右子树中去。因为,这样的话,只更新了这个区间。他的子区间能没有发生过改变。原创 2014-02-25 20:33:06 · 889 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies?(线段树+反素数)
这个反素数不太会,这道题目其实也不是自己想出来的看了别人的博客:http://blog.csdn.net/weiguang_123/article/details/7880875里面说的很详细,我就不在多说了啊。Who Gets the Most Candies?Time Limit: 5000MS Memory Limit: 131072K原创 2014-02-22 15:26:36 · 851 阅读 · 0 评论 -
POJ 2750 Potted Flower(线段树+dp)
题目大意:给定一个环形序列,每次修改一个元素,输出环上的最大连续子列的和。解题思路:用线段树记录当前区间的非空最大子列和当前区间的非空最小子列。如果环上的数都是正整数,答案是:环上数的总和-根结点的非空最小子列;这里面要注意的是:建树的时候要一遍输入一遍递归。Potted FlowerTime Limit: 2000MS Memory Limit:原创 2014-02-22 19:07:57 · 1032 阅读 · 0 评论 -
POJ 2828 Buy Tickets 线段树入门(建树稍微有点抽象)
一开始看的时候真的不知道为什么是线段树的题目。后来看到了网上他们的讲解,发现原来也是线段树。先说一下题意:就是买票插队的问题,有n个人插队,他们都是插道a的后面,所以他的当前位置是a+1,然后也肯能会有别的人插到他的前面去,所以他的最终位置会发生变化,要你说出最终队伍的顺序。做的方法是:倒过来更新线段树,找到每个人应该存在的位置,然后记录下来,输出就行了。解释一下算法:这里建树保存原创 2014-02-20 21:17:36 · 1001 阅读 · 0 评论 -
BestCoder Round #20 B,C
B:对于坐标先进行离散化,然后线性的扫一遍,常见的处理方式。linesTime Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 644 Accepted Submission(s): 298Problem D原创 2014-12-02 09:23:01 · 983 阅读 · 0 评论