线段树
GocNeverGiveUp
这个作者很懒,什么都没留下…
展开
-
HDU 4027 Can you answer these queries?(线段树单点更新)
反思总结,总是学不全,(虽然才学了两天)这次又学到了,如何用update进行单点更新,这次我们是没有办法进行区间更新了,既然这样在update中,是有限制范围的,因此保证了l==r的时候rt节点一定在所求区间之内,我们此时更新这个结点就行了。。就是简单的单点更新而已,不过是我忘了。。。。。。。还有一个优化,当sum[rt] == r - l + 1的时候,已经没有可以继续优化的情况了,此时...原创 2019-03-08 10:08:25 · 90 阅读 · 0 评论 -
ZOJ 1610 Count the Colors (线段树染色)
这是一道收获颇深的线段树,打破了我对线段树死板模板的印象,这个数据结构灵活程度还是挺高的,尤其是同一个地方出现的同一个函数,甚至因为题意不一样而导致作用完全不一样,做线段树的题要有一个提前的设计才行啊https://cn.vjudge.net/contest/66989#problem/F这道题不会做,大家都是先把区间缩成点,便于计算和计数之后用单纯的一个laz数组来标记每个叶子节点的...原创 2019-03-07 21:04:46 · 100 阅读 · 0 评论 -
HDU 1542 Atlantis (线段树+扫描线拆分理解 超详细)
题目链接:HDU - 1542之前没有做过这类题,只能模仿着学习,现在扫描线的作用和原理差不多明白了,实现方法各位大牛各有见解,我找一种比较容易实现的思路清晰代码学习推荐一个好的博客先,先看懂原理再说:链接:转载大牛的这个兄弟的图画的很好,看看他画的图就行:看图完整代码:#include <cstdio> #include <cstring> ...原创 2018-02-13 15:24:34 · 384 阅读 · 0 评论 -
线段树 - 扫描线法计算矩形面积
转载自:线段树辅助——扫描线法计算矩形面积并分析:1.矩形比较多,坐标也很大,所以横坐标需要离散化(纵坐标不需要),熟悉离散化后这个步骤不难,所以这里不详细讲解了,不明白的还请百度2.重点:扫描线法:假想有一条扫描线,从左往右(从右往左),或者从下往上(从上往下)扫描过整个多边形(或者说畸形。。多个矩形叠加后的那个图形)。如果是竖直方向上扫描,则是离散化横坐标,如果是水平方向上扫描,则是离散化纵坐...转载 2018-02-11 21:52:19 · 424 阅读 · 0 评论 -
HDU 1754 I Hate It(线段树入门,单点更新求最值)
B - I Hate It HDU - 1754用线段树模板,就能过这道题,这道题和“敌兵布阵”不一样的地方在于他是要求区间最大值,和区间求和非常相似,代码基本都通用,可惜一直忘了用getchar()吸收回车,输入字符的时候错了n遍,但是总体来说还是很简单的一道入门题#include<iostream>#include<cstring>#include<...原创 2018-02-07 12:01:50 · 161 阅读 · 0 评论 -
HDU 1166 敌兵布阵(线段树入门,单点更新求和)
A - 敌兵布阵 HDU - 1166这道题是搜到的线段树模板题,自己模仿大牛的写法,写出来也可以理解,目前自己的水平尚可以解读,感觉比较容易理解,不过以后要靠自己写了,虽然心里比较没谱。。。多多钻研,细节比较多#include<iostream>#include<cstring>#include<cstdio>#include<al...原创 2018-02-06 21:20:15 · 165 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers(线段树的区间更新)(做题一知半解的结果就是什么也学不会)
题目POJ - 3468做这道题之前一直以为会用单点更新就行了,区间更新也可以转化为单点更新的问题,结果当然是超时之后就是学习的过程,看了好长时间算是明白了区间更新的奥妙,即pushdown函数实现了标记下移更新再更新一下,之前一直以为自己理解了,其实上面说的理解是一知半解,因为只有一个地方不懂而已,没有深究,后来发现其实自己一直都理解的有偏差,还是太急于求成了之前一直不知道为什么...原创 2018-02-10 16:08:14 · 204 阅读 · 0 评论 -
线段树摘要
看了大牛的线段树讲解,受益匪浅,无奈篇幅太长,自己总结了一下其中比较重要的要点:摘自:http://blog.csdn.net/yitongjun/article/details/53193724线段树的存储结构:线段树是用数组来模拟树形结构,对于每一个节点R ,左子节点为 2*R (一般写作R<<1)右子节点为 2*R+1(一般写作R<<1|1)然后以1为根节点,所以,整...转载 2018-02-05 22:11:24 · 136 阅读 · 0 评论 -
ZOJ 3772 Calculate the Function(线段树+矩阵乘法)
https://vjudge.net/contest/294593#problem/F这道题是把相邻矩阵的乘积用线段树保存了,后面重复查询的时候节省了很多时间,其实难点在于问题的转化和矩阵乘法的模拟上,线段树方面用到的是很简单区间更新问题。#include<iostream>#include<cstring>#include<cstdio>#i...原创 2019-05-02 19:48:18 · 265 阅读 · 0 评论