
线段树
文章平均质量分 71
htw0056
这个作者很懒,什么都没留下…
展开
-
线段树之HDU1698 Just a Hook
成段替换模板题。 #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define lson l,m,rt<<1 #define rson m+原创 2015-08-10 13:48:01 · 222 阅读 · 0 评论 -
线段树之HDU4614 Vases and Flowers
不敢相信自己居然1A,一气呵成。虽然写的有点丑。纪念下! 后来发现网上有二分的写法,然后跑得还不如我的,我直接一遍扫,找pos1和pos2,二分的话每次都要跑好多次query,会慢一些,但写起来比我的简洁些。 #include #include #include #include #include #include #include #include #include #in原创 2015-08-10 18:20:45 · 255 阅读 · 0 评论 -
线段树分类总结
有时候发现自己一天刷10道题,还不如一天认认真真的刷一道题,然后好好地总结。 所以,现在就总结一下最近一直在练的线段树。 关于概念这些,就不多说了,主要是类型分类。(注:代码风格学习的是HH神的,真的很不错,简洁明了) 具体的代码见blog。 1.改点求段 1)点改变(增加,减小,替换),求某段的和 HDU1166 敌兵布阵 2)点改变(增加,减小,替换),求某段最大小值原创 2015-08-10 09:13:24 · 484 阅读 · 0 评论 -
线段树之 HDU4578Transformation
这题,整整写了一天,公式不难推,但是加乘的先后顺序影响,整整debug了一天,而且是和ac了这题的队友一起找的。。 虽说这算基础题,但写起来确实很吃力,看来水平还不够,下面的解释也写得很含糊,有时候就有种只可意会不可言传的感觉。 #include #include #include #include #include #include #include #include #in原创 2015-08-10 14:57:45 · 564 阅读 · 0 评论 -
线段树之HDU3974 Assign the task
这一题,第一眼看就觉得是线段树,成段替换的。可是很久都想不到怎么去做,因为我们平时更新的区间都是连续的一段区间,而这题给你的是一棵树,没法把他们连成段。 然而大神和渣渣的区别就在这里了,后来参考别人的代码才发现,原来可以用dfs处理,将这棵树映射到线段树中。dfs处理时候,可以将该节点的所有子节点都统统放在一块(用标记记录每个遍历到的次序)。只要会dfs处理,其他的就很简单了。 #includ原创 2015-08-10 14:17:50 · 420 阅读 · 0 评论 -
线段树之ZOJ1610 Count the Colors
成段替换的模型。 这一题告诉你的是要涂色的点的范围,而线段树内节点表示的区间的颜色(原谅我拙计的语文)。可以和POJ2528 对比,就能发现区别了。 #include #include #include #include #include #include #include #include #include #include #include #include #in原创 2015-08-10 13:36:51 · 229 阅读 · 0 评论 -
线段树之poj 3468 A Simple Problem with Integers
改段求段的模板,首先要理解lazy标记,如果没有它,你每次都需要更新要叶子节点,那时间开销是巨大的。如果加了lazy标记,你每次更新的时候可以将当前节点的孩子所需更新的信息用lazy标记保留,等到下一次需要用到其节点时再去更新。 #include #include #include #include #include #include #include #include #inc原创 2015-08-10 09:34:29 · 217 阅读 · 0 评论 -
线段树之HDU1166 敌兵布阵
最基础的改点求段,可以用来练模板。 #include #include #include #include #include #include #include using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 const int MAXN=50010; int sum[MAXN<<2];原创 2015-08-10 09:18:07 · 280 阅读 · 0 评论 -
线段树之HDU1754I Hate It
也是改点求段,只需要将update里的目标值替换,然后pushup换成求max即可。#include #include #include #include #include #include #include using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 const int MAXN=20原创 2015-08-10 09:24:55 · 271 阅读 · 0 评论 -
线段树之POJ3264 Balanced Lineup
和HDU1754几乎一样,就是多保存一个min值。 #include #include #include #include #include #include #include using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 const int MAXN=50010; int Max[M原创 2015-08-10 09:28:12 · 221 阅读 · 0 评论 -
线段树之POJ2528 Mayor's posters
成段替换。 个人认为这题重点是离散化。渣渣也是参考别人题解的,所以不班门弄斧了。 #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #defi原创 2015-08-10 13:50:44 · 222 阅读 · 0 评论 -
线段树之HDU4553 约会安排
区间合并。。两棵树来维护即可 #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define lson l,m,rt<<1 #define r原创 2015-08-10 19:08:05 · 437 阅读 · 0 评论