线段树
代码随想录
代码随想录网站:https://programmercarl.com
展开
-
poj 3468 A Simple Problem with Integers 基础线段树
这个题我之前做过,我在有做一下,wa,re了一下午,我无语了,各种小毛病,我都标记出来了!!!!!!!!!!!!! #includeusing namespace std;struct node { long long left; long long ri原创 2011-09-01 16:44:34 · 733 阅读 · 0 评论 -
poj 1151 hdu 1542 Atlantis 线段树扫描线(详细讲解)
我的扫面线第一题,一开始看网上讲的都好抽象,最后还是研究别人代码整明白的,所以我要写一个直观的,哈哈哈!!希望大家都能看懂如图虚线将整个图型分成三个矩形,我们现将每个点的x进行排序,也就是(10,15,20,25.5)这样就知道矩形的长了,还差宽,然后我们就要开始扫描线啦先每个点的y值离散话,因为我们要求的是映射在x轴的线段,然后建树,共有t哥点,样立t-1等于4下面的线段树我每个原创 2012-07-26 10:32:01 · 11040 阅读 · 14 评论 -
HDU 1754 I Hate It 基础线段树
用区间值m表示这段区间的最大值,一直更新这个区间的最大值,很基础的线段树原创 2014-07-26 10:58:59 · 1192 阅读 · 0 评论 -
hdu 1698 Just a Hook 基本线段树
使用线段树更新每段区间的奖(1,2,3),最后在统计整段区间的数和,基本线段树,果断1A啊#include#includeusing namespace std;#define N 100000struct node{ int l,r,p;}a[N*4];int n;void build(int left,int right,int i){ a[i].l=left原创 2014-07-24 17:28:53 · 886 阅读 · 0 评论 -
hdu 4325 Flowers 离散化+线段树 多校联合赛(三) 第六题
很明显的线段树, 可是(1 i i <= 10^9)啊!!这是什么概念,一定要离散话的!!可数据弱的都没离散就过了,要是有一组1,10^9,那没离散话的不就全挂了,数据好弱啊先吧左右点离散话,然后每条边的s为这条边的染色次数,querry是就吧沿路边加载一起#include#include#includeusing namespace std;#define N 10000原创 2012-08-01 18:35:40 · 740 阅读 · 0 评论 -
hdu 4339 Query 线段树 多校联合赛(四) 第九题
比赛的时候一顿wa啊!好伤先将两个数组对位比较,相等为1,否则为零,把这个01数组挂在线段树的末节点上,然后就是向上更新啦线段树,线段有两个属性,ml存放该线段左边最大连续长度,mr存放该线段右边最大连续长度,在向上更新的时候是a[i].mr=a[i*2+1].mr; a[i].ml=a[i*2].ml; 这个好理解吧,但如果左孩子是全连续(这条线段的长度等于左连续长度等于右连续长原创 2012-08-04 02:51:56 · 2063 阅读 · 2 评论 -
poj 1389 Area of Simple Polygons 线段树扫面线,和1151一样的嘛
这道题和1151一样嘛!自己有打一边温习温习详细讲解看 http://blog.csdn.net/youngyangyang04/article/details/7787693#include#include#includeusing namespace std;#define N 1005struct ode{ int y1,y2,x,flag;}node原创 2012-07-30 12:45:26 · 742 阅读 · 0 评论 -
poj 1823 Hotel 线段树,注意懒惰标记,不标记就会超时滴
这题就491个accepted,还挺吓人的,别被吓住哈,其实我被吓住了,嘻嘻,这泥玛做也是悲剧,但看分类上说属于中等题,我就猛憋一股气,三A ,呵呵这个题我们这需要在线段上用ml,mr,len表示左面有几个连续空位,右面有几个连续空位,中间有几个连续空位在和并的时候注意更新规则a[i].len=max(a[i*2].mr+a[i*2+1].ml,max(a[i*2].len,a[i原创 2012-07-30 12:37:12 · 1029 阅读 · 0 评论 -
hdu 4302 Holedox Eating 线段树去维护蛋糕!! 多校联合赛第三题
好囧啊!!打完貌似很快可调试一整天,太伤了,要是没有驴薛的对拍程序,我估计要整的没完没了,吐血了!!不知到怎么想的,上来就想吃完蛋糕在走道,可题意分明是先找到蛋糕再吃!!貌似大家都不知道我在说什么,小小的吐曹一下!!总之,思路不清晰千万不开始打代码!!!后换无穷啊!!!!!#include#includeusing namespace std;#define max1原创 2012-07-21 16:47:31 · 971 阅读 · 0 评论 -
poj 3667 Hotel 线段树 内存分配问题
我写这道提真是元气大伤,一开始写完,自己写几组数据都过不了,在网上看别人的解题报告,总是感觉代码太复杂,都不愿意看,还是改自己的吧,后来就有重写的欲望,删了一百多行,在写,有写测试数据的生成程序测,最后又写了一个暴力程序对拍,擦擦!!断断续续的整了两天,现在看自己的代码也很乱,我估计谁也看不进去我就说一下大概思想吧,用mm表示中间连续最大值 mr表示右边连续 ml表示左边边连续 len表示整个原创 2012-08-06 12:54:54 · 783 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers 线段树!!!!
每一条边都记录这条边的总和 和这条边的单位增加量#include#includeusing namespace std;#define max1 100005struct node{ long long l,r,s,snum;///s单位表示增加数,snum表示总和}tree[max1*4];long long a[max1];long long ans,cou;void原创 2012-06-08 15:55:18 · 565 阅读 · 0 评论 -
poj 2182 Lost Cows 线段树!!!!
线段存取这一段区间还有多少个空位,从后向前搜,搜过一个点,则这个条线段的数量减一!!!#include #include using namespace std;#define max1 8005struct node{ int l,r,s;}a[max1*4];int ans[max1],num[max1],sign[max1];void build(int i,int原创 2012-06-08 09:56:10 · 820 阅读 · 0 评论 -
poj 2828 Buy Tickets 线段树!!!
只要理解 用线段记录这个区间有多少个空位就行啦!!然后根据左右孩子的空位数 进行遍历线段树#include#includeusing namespace std;struct node{ int l,r,s;}a[1000000];int b[200005],val[200005],ans[200005];void build(int i,int left,int right)原创 2012-06-07 17:03:57 · 477 阅读 · 0 评论 -
hdu 4006 The kth great number 很复杂的线段树,至少对于我来说,但也学会了很多!!!!!!!!!!
这道题是网络预选赛上做的,当时就是超时,后来知道是线段树,从时间复杂度来说用线段树先是将所用的点记录然后nlog的快排,之后查询就是logn了,软和不用线段树,之后的查询是On的复杂度,要是来一堆大数据那就必然超时了废话不多说了,先将记录的所用点排序,在离散化,建树,将数据记录在最低叶上,再用num记录区间内点的数量,在从后往前搜,遇见I就将对应点之前的区间num减1,遇见Q就搜索K大的数!!原创 2011-09-09 21:52:52 · 752 阅读 · 2 评论 -
poj 2528 Mayor's posters 线段树+离散话!!!
菜鸟第一次这么彻底的完全脱稿写线段树 因为数组开小了 re一次 真心建议 硬憋自己脱稿写一次,对线段树的理解一下子就上升了,呵呵!!!#include#include#includeusing namespace std;struct node{ int l; int r; int s;}a[400000];int b[100005],c[100005],d原创 2012-06-06 17:15:59 · 624 阅读 · 0 评论 -
poj 2777 Count Color 基础线段树,带给的初学者噩梦!!!
线段树的精髓是父亲结果要优于孩子结果啊!!!!!用过的线段直接赋值-1; #include#includeusing namespace std;#define N 100005struct node{ int l,r,c;}a[N*4];in原创 2011-09-22 21:23:54 · 736 阅读 · 0 评论 -
hdu 1255 覆盖的面积 线段树扫描线求重叠面积
这道题和poj1151,hdu1542差不多,扫描线详细讲解http://blog.csdn.net/youngyangyang04/article/details/7787693但是这个是求重叠的面积,需要处理的细节还是挺多的,我有单独写了一个求和函数sum,因为放在insert里面求和会遇到很多问题啊,还有就是离散花的时候也会遇到各种问题,总之要细心啊,敲代码的时候别溜号,我就老六号原创 2014-07-29 11:20:56 · 1370 阅读 · 0 评论