线段树
黑色的夢
I'm Acmer.
展开
-
poj 3468 A Simple Problem with Integers 插线问线
线段树的插线问线问题,第一次写的时候仿效之前的写法想的是每一次的区间更新都更新到最底层,比如一共十个数,现在 C 1 10 3 那么紧接着的操作是每一个区间都更新,然后询问的时候就直接输出那一段区间的值(感觉有点虚,会TLE,毕竟操作太多了),结果果然TLE。这里插线问线不需要更新的那么多,只需要更新到需要更新的这一段区间,并标记接下来的这一段会add多少即可,不需要一路更新,具体的下一步更新可以原创 2016-05-11 17:57:10 · 408 阅读 · 0 评论 -
nyoj 9 poj 2528 posters
线段树的离散化,因为贴海报的范围是1~1e7,肯定开不了那么大的数组,但是n的范围很小只有1e4,所以可以离散化处理,什么叫做离散化? 百度百科:离散化,把无限空间中无限的个体映射到有限的空间中去,以此提高算法的时空效率。 比如一组数据: 3 10000 100000 10000 20000 20000 100000 心算就能算出来应该是3,我们可以把10000假设成1,100000假原创 2016-05-17 09:47:26 · 617 阅读 · 0 评论 -
hdu 1754 I Hate It 线段树(插点问点)
线段树入门题,年前做过线段树类型的题,不过是用树状数组或者rmq做的,没用线段树(其实是不会), http://blog.csdn.net/x314542916/article/details/7837276>的图片” title=”” /> 看了这张图原理应该就明白了, I Hate ItTime Limit: 9000/3000 MS (Java/Others) Memory原创 2016-05-08 15:30:04 · 627 阅读 · 0 评论 -
zzuli1917 rmq+二分
之前做过类似的,一眼就看出来rmq+二分,可惜代码能力太菜了,写了快两个小时才写出来。 思想:肯定是一层for()循环遍历每一个下标,对于每个下标i向左查找到第一个比自身值小的右边那个下标left,同时向右查找到第一个比自身值小的左边那个下标right。比如然后(right-i+1)(i-left+1)*a[i],即为所求值。比如1 5 4 6 2对应4这个数,其下标为3,那么左边第一个比自身值小原创 2016-08-17 18:00:26 · 684 阅读 · 0 评论 -
nyoj1068 ST 线段树
题目链接 线段树查询区间和以及区间奇数个数。 区间和很好求,很快就写好了,区间奇数个数写起来麻烦一点,除了查询的时候需要lazy操作,更新的时候也需要lazy操作。 直接上代码:#include<stdio.h>#include<string.h>#define ll long long#define maxn 10010struct stu{ ll l,r,mid,lazy原创 2016-11-05 19:18:28 · 443 阅读 · 0 评论 -
浙江理工大学新生赛 B巴比伦花园 rmq+二分
题目:http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4239 起初觉得是线段树,但是不知道如何建树才能查询到题目要求的答案。后来看了题解,才知道是rmq&&二分来写,不过在这之前要先来预处理一下,提前知道每个点最能够到达的最远距离,然后rmq存一下区间内点能到达的最远距离,然后在查询的时候,二分查询(l,r)区间能够到达的超过或等于r的第原创 2016-11-30 20:21:03 · 883 阅读 · 0 评论