线段树
hebastast
这个作者很懒,什么都没留下…
展开
-
CityHorizon-线段树
题目的大意是: 在一条水平线上有 N 个建筑物,建筑物都是长方形的,且可 以互相遮盖。给出每个建筑物的左右坐标值 Ai,Bi 以及每个建筑物的高度 Hi, 要计算出这些建筑物总共覆盖的面积。 可以将建筑物投影到x轴上 就行成了一段段线段 在线段的基础上要添加权值 权值体现高度的大小 如果同一个线段被覆盖了多次 则以权值大的为准 返回线段的长度乘以权值就可以得到整个建筑物的面积 如果原创 2016-01-25 09:55:01 · 501 阅读 · 0 评论 -
线段树解决约瑟夫问题
约瑟夫问题围圈报数 总共有n个小孩子 每次循环报到m个数字的时候就退出队列 如果采用普通的循环队列来模拟的话时间复杂度是o(n*m) 当n和m都很大的时候计算的时间就会很长 所以将环拆开成为一条线 然后利用线段树进行模拟 时间复杂度为o(n*logn) 这里利用了线段树统计区间上没有退出的孩子的个数 这样在没有退出的孩子中从左到右找到第p个孩子的时候就可以使用类似于二分的方法来查原创 2016-01-26 11:47:20 · 1542 阅读 · 0 评论 -
307. Range Sum Query - Mutable
class NumArray { private: vector<int> data; vector<int> segtree; int constructTree(int segs,int sege,int segindex) { if(segs==sege)//叶子节点 { segtree[segindex原创 2016-11-21 14:48:12 · 373 阅读 · 0 评论