
线段树
sin_XF
no pains no gains
展开
-
线段树专题—HDU2795 Billboard
题意:给一块h*w广告板,然后给n个1*wi的广告条,广告条放的顺序是有限选择向上的,再优先选择左边的,对于每块广告条,输出它放的位置,如果放不下,输出-1分析:很简单的单点更新max值的线段树,思路很好想,以广告板的每个高度建树,更新点的时候优先选择高度值小的点。注意:比较容易出错的是 ,要注意h的范围啊1e9!!!,直接以这个高度建树肯定爆啊,这里注意到n是200000原创 2015-08-10 14:41:46 · 701 阅读 · 0 评论 -
线段树专题 POJ3468 A Simple Problem with Integers
题意:n个点,m个操作,两种操作类型,C X Y K 表示区间[x,y]上每个点值加k,Q X Y 求区间[x,y]的和分析:线段树区间求和,裸模板注意:结果会超int,要用long long 表示,如果是在hust上交结果要用%I64d,poj的话则用%lld代码:#include #include #include #include #inclu原创 2015-08-10 16:55:23 · 762 阅读 · 0 评论 -
线段树专题—HDU1698 Just a Hook
题意:t组数据,给一个n,m表示n长度的钩和m次操作,初始钩子的每单位长度的价值为1,接下来输入 x,y,k 的操作把钩子[x,y]区间的价值替换为k,求m次操作后钩子的价值为多少分析:成段替换,最后只要求第一个区间就可以了,使用不用写query询问代码:#include #include #include #include #include #include原创 2015-08-10 17:57:04 · 1089 阅读 · 1 评论 -
线段树专题—POJ 3667 Hotel(区间合并模板)
题意:给一个n和m,表示n个房间,m次操作,操作类型有2种,一种把求连续未租出的房间数有d个的最小的最左边的房间号,另一个操作时把从x到x+d-1的房间号收回。分析:这是一个区间合并的典型应用,基本只要套套模板就好了下面是对区间合并的解释:up函数:当修改完此时的区间时,为了维护该区间上面区间值的正确性,向上回朔更新上面区间的值down函数:把延迟标记下传,并修改下原创 2015-08-15 14:47:53 · 1585 阅读 · 0 评论 -
线段树专题—HDU 4027 Can you answer these queries?
题意:给n(1-100000)个点,且所有点的值的和不超过2的63次,然后m(1-100000)个操作,操作有两种,一种把一段区间的每个点的值变为他的开根号的值,另一种是询问一段区间点值的和分析:先求出最多要更新的次数,然后进行判断,下面是计算:设一共有n个点,每个点的值一样为k(最极端的情况),值的总和当做2^63(最极端的和)那么再设n=2^a,k=2^b由于n*k=2原创 2015-08-17 17:21:43 · 691 阅读 · 0 评论 -
线段树专题—ZOJ1610 Count the Colors
题意:给一个n,代表n次操作,接下来每次操作表示把[l,r]区间的线段涂成k的颜色其中,l,r,k的范围都是0到8000分析:其实就是拿线段树维护一段区间的颜色,总体用到的是线段树的区间更新把,但是会给人一种区间合并的错觉注意:这题比较坑的是千万不能拿n建树,不然就会segmentation fault,必须拿8000建树,也就是树是固定的代码:#inclu原创 2015-08-17 16:02:37 · 2775 阅读 · 0 评论 -
线段树模板及专题合集-----不断更新中
之前学过一段时间的线段树,后来就没有再做了,上次比赛做到几道题居然都是线段树,而且渐渐发现线段树的适用性之广和重要性,而且之前学的不全面,于是决定重现学一遍线段树,顺便改一下之前的代码风格一.单点更新最典型的最基础的题目就是敌兵布阵了,题意大概是给n个数,然后3种操作:某个点的数加上x,某个点的数减去x,求[x,y]区间所有数的和。前两种操作都一样,只不过减去x相当于加上-x原创 2015-07-30 10:56:46 · 1995 阅读 · 0 评论