这两天主要看了线段树集中几种类型的题目。
第一道是因为如果不离散化要开10的八次方的数组。而在,线段树中开这么大会超时。一般见的都是开到10的5次方的数量级。
第二个是一道铁路的关于转化为线段树的题目。问题是转化成对n-1个数进行m次区间更新最值,对于每段铁路而言,min表示该最早被使用的时间,max表示最后一次被使用的时间,最小花费即区间查询就是每天都加上这段铁路的花费,更新用线段树update,求花费时,还有个点,前缀和优化,降低时间复杂度。这道题目难点是转化为线段树要维护的常见的信息。想了老长时间。果然,线段树靠思维。
第三个,看了一个类型的题目,扫描线两道,一个求面积并,还有一个求周长并,这一般是扫描线的应用。
昨天看了几道树上路径问题,首先树链剖分,然后以每个点的dfs序建线段树,因为线段树中元素存储区间和,那么问题转化为线段树单点更新和区间查询问题 。对于树上dfs序用途,dfs序可以把一棵树区间化,可以求出每个点的管辖区间。它是树链剖分的必要内容。
另外昨天的讲区间所有数开根号向下取整也搞懂啦,因为一个不大于2^63的整数至多经过6次开根号操作就会变成1,所以就算所有点都更新时间复杂度也不会超过O(6*n),因此如果在用线段树维护区间和的时候,如果一个区间的和已经等于这个区间的长度,那么就不用往下继续更新,因为这时候区间所有元素都已经是1 ,所以就是利用的这一点。
因为昨天碰到很多线段树和树上dfs序以及树链剖分的题目,所以今天就又把这一部分的单纯知识认真学习一遍。
另外还看了一道线段树和中国剩余定理以及欧拉函数结合的题目,没看太懂,所以就还得补一下这两部分内容。