ACM[线段树]
sevenster
= = 水男
展开
-
HDOJ 1166 点更新段查询求和 初级线段树
在Alibaba上碰到了中级的线段树问题,另外在队内集训的时候做2010年的多校联合的题时,遇到了两道线段树。但是无奈的我只会树状数组。如果用树状数组来段更新,简直是以卵击石嘛~ 接连受打击,无奈之下只好拜读了下Roba,NOS的博客,他们的教学博原创 2011-08-20 20:38:12 · 652 阅读 · 0 评论 -
HDU 1394 求逆序数
先贴一个TLE的代码...#include#include#define MAXN 11111using namespace std;int gt[MAXN<<2],st[MAXN<<2];int date[MAXN];void pushUpmax( int rt ){ gt[rt]=max(gt[rt<<1],gt[rt<<1|1]);}void pushUpm原创 2012-09-05 17:33:03 · 1043 阅读 · 0 评论 -
HDU 1754 点更新段查询最大值线段树
由于自己做代码优化时,条件不清晰,两个变量写错导致WA了两次,不应该!#include#include#define MAXN 222222using namespace std;int tree[MAXN<<2];int N,M;void pushUp( int rt ){ tree[rt]=max(tree[rt<<1],tree[rt<<1|1]);}voi原创 2012-09-05 12:51:38 · 1003 阅读 · 0 评论 -
HDU 1166 点更新段查询线段树
很久没做线段树的题目了。自己想想延迟标记怎么弄...#include#define MAXN 55555using namespace std;int tree[MAXN<<2];void pushUp( int rt ){ tree[rt]=tree[rt<<1]+tree[rt<<1|1];}void build( int l,int r,int rt ){原创 2012-09-05 12:22:05 · 952 阅读 · 0 评论 -
区间最值线段树
去年省赛原题..今年基本上把线段树忘记的差不多了。今天又敲了一遍。发现自己的输入处理还不错。这种类型的弱爆了线段树...由于思想不细致,导致WA了很久,看来以后要细心一点了!weak nodeTime Limit : 2000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)Tota原创 2012-08-25 12:56:18 · 1114 阅读 · 0 评论 -
HDOJ 2871 Memory Control 区间合并线段树
这题卡了我很久!不过也给了我很多的启示.. 因为自己对线段树的理解还是很浅显的所以这个题也便总是过不了,一直卡着卡着。遵照三鲜的原则,现在我做题极少看别人的代码,但是又没有人可以和我一起讨论的,所以今天还是看了下别人的解题报告,因为我想不出了,看着看着我发现了一个问题----->原创 2011-08-30 18:11:32 · 684 阅读 · 0 评论 -
谈区间合并线段树
对于以前做的区间合并线段树颇有微词,对于大神们使用三个数组来记录节点的情况很是不解。对于当前点,只需要能提供所需的w长度区间即可向下进行判断,左子树优先提供,左右子树合并提供,右子树最后提供,否则输出不可行。故我认为只需要一个记录当前节点的情况的数组即可,不需要三个数组,故用原创 2011-08-29 10:45:19 · 739 阅读 · 0 评论 -
HDOJ 2795 中级线段树 线段树性质的灵活运用
题目大意:给定一面墙h*w的尺寸,现在向墙壁粘贴1*w'的纸条,求字典序最小的而且满足条件的粘贴位置。这题h,w的范围为10^9而普通的线段树是要此尺寸*4的,刚开始写的时候内存开大了,但是题目的另外一个条件n各种线段树的关键在于分析题目要的是什么,在区间合并线段树中,采原创 2011-08-26 11:14:46 · 626 阅读 · 0 评论 -
POJ 2823 阉割版线段树
此题的较好方法为单调队列。稍后实现一下。用阉割的线段树来写9600ms++囧~简单的线段树就不说了,详情可以看以前的文章或者下面的代码.....虽然有点凑数量之嫌....#include#define MAXN 1000001using namespa原创 2011-08-24 11:19:27 · 567 阅读 · 1 评论 -
POJ 2528 线段树+坐标离散化+哈希+二分
题目大意:题目给定一面墙(一维),在墙上贴海报,(li-ri)的区间形式张贴n张海报,求最终在墙上能看见多少张海报?区间覆盖的线段树的求法是这样的,每个区间给定一个标记,例如(1,10),(2,6)张贴两张海报,那么(1,10)区间的节点就原创 2011-08-25 16:42:24 · 869 阅读 · 0 评论 -
POJ 2823 单调队列
KD的单调队列啊!! 十分坑啊~~ 整个下午都浪费在这个上面了~虽然优化到了5400ms+了,但是离那些500ms+的神犇们差距太远了... 应该是有很好的算法吧,只能一个人想了。使用单调队列... 无限TLE啊... 没看代码只是自己YY了一遍大概怎么弄。我理解的的单调队列原创 2011-08-24 20:02:02 · 545 阅读 · 0 评论 -
POJ 2777 段更新段查询 位运算优化
近来A题十分的慢啊,可能是我不在状态吧,每天给自己定的8题计划都完成不了。依旧线段树,感觉区间合并和计算几何的线段树还是完全没有感觉。现在在深入理解算法的实质,以及在实际应用中怎样转换。线段树只是一种数据结构,只是一棵树具体要怎样使用以及实现怎样的功能,都要Acmer自己来设原创 2011-08-24 10:23:29 · 692 阅读 · 0 评论 -
HDOJ 1698 段更新段查询 初级线段树
现在写线段树感觉还是蛮不错的熟能生巧了吗?感觉自己一直在做模板题NOS神犇的博客还真是好啊 给了我这么好的学习地方~线段树把他的每个题吃掉吧这题要注意的就是...计算区间大小时(L-R+1)是错的,想当然了;另外计算的时候记得root还有sum+=原创 2011-08-22 11:11:28 · 525 阅读 · 0 评论 -
HDOJ 1698 段更新段查询 初级线段树
NOS神犇博客里的一句通常这对初学者来说是一道坎吓得我3天没有看线段树= = 因为鄙人是新手啊.....昨晚临睡前想弄懂段查询段更新的线段树,结果还就真的弄懂了;这种线段树用了延迟标记以及其操作PushDown;延迟标记代表当前区间的值为多少。Push原创 2011-08-22 11:04:27 · 614 阅读 · 0 评论 -
HDOJ 1754 单点更新段查询最大值 初级线段树
下面是NOS神犇的简介:{在代码前先介绍一些我的线段树风格:maxn是题目给的最大区间,而节点数要开4倍,确切的来说节点数要开大于maxn的最小2x的两倍lson和rson分辨表示结点的左儿子和右儿子,由于每次传参数的时候都固定是这几个变量,所以可以用预定于比原创 2011-08-20 23:14:03 · 681 阅读 · 0 评论 -
HDU 1698 区间更新线段树
一点点想当然的想法使得我WA了6次...对线段树的理解又深了一点。熟悉了加标记的操作。#include#include#define MAXN 111111using namespace std;int tree[MAXN<<2];int flag[MAXN<<2];void PushUp( int rt ){ tree[rt]=tree[rt<<1]+tree[原创 2012-09-05 22:03:59 · 916 阅读 · 0 评论