线段树
文章平均质量分 57
lin375691011
呵呵
展开
-
POJ 2777 Count Color
线段树第三题,这是优化很奇葩的题。领教了。题目大意:给出每一个广告牌每次的涂色区间,查找某个区间内共有多少种颜色。解题思路:就是线段树啊。不过需要二进制优化,因为最多不超过30种颜色,所以完全可以用一个整形变量来存某一个区间内出现的颜色的种类。如果不这样的话就超时的死死地。。。下面是代码:#include #include const int M原创 2014-02-20 19:41:17 · 4849 阅读 · 0 评论 -
POJ 3277 City Horizon
题目大意:给出各个房子阴影的长度(以区间表示)和高度,求阴影的总面积。解题思路:矩形面积并。下面是代码:#include #include #include //#include #include #include #include #include #include #include #include #define eps 1e-8#d原创 2014-08-25 08:21:00 · 4627 阅读 · 0 评论 -
POJ 1177 Picture
题目大意:矩形的周长并(够大意了~)解题思路:扫描线,跟面积并一样,只不过处理周长的时候注意边的增加与减少。下面是代码:#include #include #include #include #include #include #include #include #include #include #include #define e原创 2014-08-24 18:33:40 · 4487 阅读 · 0 评论 -
POJ 1151 Atlantis
题目大意:给出原创 2014-08-20 20:53:46 · 4736 阅读 · 0 评论 -
【2014 Multi-University Training Contest 3 1007】/【HDU 4893】 Wow! Such Sequence!
第三场了,还是只有一道题能再次赛后补出来。题目大意:给出n个数,初始值为0.有三种操作:1.将某一个数加d。2.询问区间[l,r]之间的数总和。3,将区间[l,r]之间的数变成与其距离最近的斐波那契数,若两边距离相同则选择小的。解题思路:线段树对于第一种操作使用点更新,对于第三种操作使用区间更新。居然上首页了o(∩_∩)o !!原创 2014-07-30 10:43:29 · 6859 阅读 · 0 评论 -
ACdream 1101 瑶瑶想要玩滑梯
没想到线段树的基本用法这么长时间没写了还没有忘,1A的感觉还是很爽的。题目大意:中文题,点此查看题目。解题思路:线段树的区间更新与查询。lazy标记的使用。当需要返回区间多个值时可以使用引用参数。下面是代码:#include #include #include #include #include #include using n原创 2014-06-15 15:11:37 · 3917 阅读 · 0 评论 -
POJ 3368 Frequent values
RMQ问题第二题,还是用线段树写的,DP很渣ST算法看不懂啊~~题目大意:给出依次不下降的n个数,求某个区间内出现次数最多的数字的个数。解题思路:这题用线段树写的话如果想不出来就卡死,想出来了真的很简单~~对于每一个区间来说,会有中间的整个的数块,和两端的小数块。中间的用线段树查询就行,两边的用二分来查找。代码中有注释。下面是代码:#includ原创 2014-03-25 14:46:49 · 6060 阅读 · 0 评论 -
POJ 3264 Balanced Lineup
这道题在POJ训练计划上属于RMQ,先来看一下什么是RMQ:RMQ(Range Minimum/Maximum Query),即区间最值查询。是指这样一个问题:对于长度为n的数列A,对于每次提问(i,j)返回数列A中下标在i,j之间的最小/大值。这是一类问题。解决办法有很多,例如ST(Sparse Table)算法是一个非常有名的在线处理RMQ问题的算法,它可以在O(nlogn)时间内进行预处原创 2014-03-23 20:38:51 · 5142 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers
一般说简单的题目不简单,但是有了线段树之后这些题都是简单题~~~题目大意:给定N个数的序列,有Q个操作。操作分两种:1、将某个区间内的所有数都加上某个数。2、计算某个区间的所有数之和并输出。解题思路:简单的线段树。单点更新会TLE,只能区间更新。下面是代码:#include #include #include #define BigIntege原创 2014-03-09 09:12:36 · 9738 阅读 · 0 评论 -
POJ 2892 Tunnel Warfare
题目大意:线段树区间查询题目,给出区间长度和截断的点,问当前点上未截断的区间最大是多少。未被截断的可以截断,截断的可以修复。解题思路:直接上线段树就行。更新的是点, 查询的是区间~~下面是代码:#include const int Max=50005;struct node{ int lsum,rsum,mnum,sum;} node[Max原创 2014-03-05 20:46:59 · 5521 阅读 · 0 评论 -
POJ 2828 Buy Tickets
线段树第二题,变简单了呢,单点更新的~~~题目大意:有一个空队列,给出按时间顺序插队的序列,问最后这个队列里的人按什么顺序排列的。解题思路:线段树来做的,每个节点代表着这个节点下还有多少个空位,然后倒叙插入。更新寻找位置。下面是代码:#include const int Max=200005;int node[Max<<2],num[Ma原创 2014-02-20 14:58:48 · 5424 阅读 · 0 评论 -
POJ 2528 Mayor's posters
POJ线段树第一题,这一上来就是成段更新加离散化,这训练计划要闹哪样~~~~~题目大意:一面墙上贴海报,问最后能看到多少张海报。因为墙的宽度是单位长度,海报的宽度也是单位长度,所以我们只要来看墙和海报的长度就行。解题思路:利用线段树可以解决。注意因为海报的区间太大,我们得对所有端点离散化,注意如果端点排序之后相邻两点不连续需要在中间再加一个点。下面是代码:原创 2014-02-20 08:49:28 · 4741 阅读 · 0 评论 -
POJ 2482 Stars in Your Window
多么优美的情书啊,可惜后面的题折腾了我四天~~只想呵呵了~~题目大意:在一个平面坐标系里给出许多星星的坐标和亮度,要求寻找一个长为W宽为H的范围使其内部(不包括边上)的星星亮度总和为最大值,并输出这个最大值。我会告诉你这个题我敲了三个版本吗??第一个版本是一个超时的版本:解题思路:扫描线垂直于x轴扫描,对于每次框住的长为W的区间,线段树查询每一个宽为H的原创 2014-03-02 12:57:18 · 11289 阅读 · 0 评论 -
POJ 2352 Stars
题目大意:按照如果Y值相等X从小到大,如果Y值不相等Y值从小到大的顺序给出一些点。不会有两点在相同的位置。当原点(0,0)到这个点为对角线的矩形内有n个点时,这个点为等级n的点。输出每个等级的点有多少个。解题思路:很水的单点更新线段树。这个题离散化可以不离散化也行。如果不离散化注意点的范围。下面是代码:#include #include const int原创 2014-03-02 14:40:54 · 5238 阅读 · 0 评论 -
HDU 1754 I Hate It
线段树单点更新第二题,这题就比上次有进步,交了一发就AC了哈哈哈。还是很简单的,只不过是更新的时候更新成了区间的最大值。下面是代码:#include const int Maxn=200005;int node[Maxn<<2];int max(int a,int b){ if(a<b)a=b; return a;}void PushUp(i原创 2014-02-18 09:30:39 · 4227 阅读 · 0 评论 -
HDU 1166 敌兵布阵
线段树第一题,看了很长时间都不会啊,入手了一个最简单的单点更新线段树的题,交了好几发才过。题目大意:给出n个数,然后有不大于40000条询问,可以更新某一个数的值,求某一段数的总和。原创 2014-02-17 19:30:37 · 4561 阅读 · 0 评论 -
POJ 2750 Potted Flower
线段树第五题,有一点动态规划的意思。代码量较大。手残残到死啊~~题目大意:给一个整数序列编号1~n,n和1相邻。每次更新一个位置上的数,问更新完后区间最大和是多少。注意这个区间不能包括全部的数字。解题思路:1、在求区间最大和的时候,在这里只有两种情况:(1)、不同时包括数字1和数字n,只需要求区间的最大和就行了。(2)、同时包括数字1和数字n,这时候需要求区间的原创 2014-02-26 08:16:04 · 189543 阅读 · 3 评论 -
POJ 2886 Who Gets the Most Candies?
题目大意:n个小孩做成一圈且按照1~n编号,每个孩子手里都有一个卡片上面有一个数。先让第k个孩子出圈,如果他手里是一个数a,那么下一个出圈的是他左边第a个。第p个出圈的人会获得p的约数个数个糖果。问获得最多糖果的是谁?获得了多少个糖果。解题思路:1、数据范围比较大,类约瑟夫环的操作要让线段树来解决。建立数查找每次是编号为几的孩子出圈。2、对于最多糖果的问题,本题还用到了原创 2014-02-24 16:54:39 · 10154 阅读 · 1 评论 -
Codeforces Beta Round #6 (Div. 2 Only) E. Exposition
题目大意给出一个正整数序列包含nn个数的。要求找到一类区间,使得区间内的最大数和最小数之间的差不超过kk。输出区间的最长长度,这样长度的区间有几个,并分别输出各个区间的左右边界。解题思路对序列构造线段树,查询区间的最大值和最小值。遍历确定最长区间的长度和数量原创 2015-02-21 12:04:38 · 1825 阅读 · 0 评论