------线段树(基础篇)
线段树 基础
nerd呱呱
菊花厂搬砖,欢迎投华为云Stack,已经好几年没更新博客了,呜呜呜
展开
-
HDU4902(线段树)练习题
如果你还是迷迷糊糊的话,建议先休息一下,前方高能!!!题目链接:点这里大概意思就是。。。如果你没学过线段树,你可能会用普通的解法,结果是time limit(我试过) 那么用线段树如何解呢?先发着,以后再写吧,不早了。zzz/*hdu4902线段树,书上版本妙妙妙呀*/#include<iostream>#include<cstdio>#include<cstring>#inclu原创 2017-08-11 23:46:42 · 499 阅读 · 0 评论 -
HDU1698(线段树)练习题
有趣的题目题目链接/*** * ccccccccccc的data,一遍ac * 线段树+懒操作第二弹 * hdu1698 */#include<iostream>#include<cstdio>using namespace std;#define lc (d<<1)#define rc (d<<1|1)#define mid (l+r>>1)const int mmax = 10原创 2017-08-14 20:33:55 · 317 阅读 · 0 评论 -
HDU2795(看似不是线段树的线段树)(一)
没有用线段树的超时代码用了线段树的AC代码题目链接:hdu2795这道题数据量太大,要是一般的暴力简单遍历,结果是 Time Limit Exceeded(我试过)。由于10910^9太大了,无法用定义长度为h(广告牌的高)的数组,于是看了看输入,只有200000组数据,就是说最多放200000行公告,于是可以把200000作为数组长度。没有用线段树的超时代码 没有用线段树代码,超时/***原创 2017-08-17 09:54:23 · 506 阅读 · 0 评论 -
HDU1754(线段树模板题)(没有用懒操作)
题目链接/*** * 线段树第二弹 * 模板题 * hdu1754 */#include<iostream>#include<cstdio>#include<algorithm>using namespace std;#define lc (d<<1)#define rc (d<<1|1)#define mid (l+r>>1)const int mmax = 200002;in原创 2017-08-15 17:11:26 · 248 阅读 · 0 评论 -
(二)线段树入门--懒操作
懒操作简单介绍简单核心代码题目 本文会持续更新,时间看作者心情。懒操作懒操作是线段树的优点,也是难点。简单介绍//树结构struct tree{ int v; //结点的值 int lz;//lazy缩写,表示是否可以进行懒操作}tr[N];通常在题目中会对区间做更新操作,如果有结点刚好代表更新的区间,那么可以仅仅对该区间的结点进行更新操作,并且对该结点做一个标记,原创 2017-08-11 23:35:55 · 641 阅读 · 0 评论 -
(一)线段树入门--补充与其他模板
一些补充线段树模板二一些补充 1,为何线段树结点数要设置为叶子结点的4倍?线段树是一棵二叉树,每一层可以容纳上一层的两倍的结点数,我们用一种特殊情况来计算:假设有n层,第n层底层有 2n2^n 个叶子结点,即每层都填满。那么根据等比数列的计算公式,共2∗2n+12*2^n+1个结点,我们实际上只要比2*叶子结点数+1大就可以了。ps:平时我一般用位运算(叶子结点<<2),耍一耍帅-。-线段树原创 2017-08-15 14:10:16 · 217 阅读 · 0 评论 -
(一)线段树入门--区间最值查询
线段树描述区间最值查询问题模板一棵看上去很唬人的树一些比较酷的操作 这是一篇入门文章,不过需要你知道啥是二叉树,并且知道递归,本文会持续更新,时间看作者心情。线段树描述分类:二叉树搜索树 节点结构:struct node{ int l,r;//范围【l,r】}tr[100];解决问题:区间问题 图示:(显示了节点分布) 叶子结点:树的最小节点。如【1,1】,【2原创 2017-07-28 13:42:12 · 2554 阅读 · 0 评论