线段树
文章平均质量分 77
EzCUfST
这个作者很懒,什么都没留下…
展开
-
hdu 1542 扫描线+线段树求矩阵面积并
这几天想啃啃树,无意中找到了这个题,一方面练习一下线段树,另一方面学习一下离散化和扫描线的技巧。 首先,离散化是必要的,因为x,y 显然,离散化的数据不会有重复,这里要介绍一个函数unique,如果现在有一个长度为n的数组unique(a,a+n)返回一个迭代器(也就是指针),它的作用是将a数组中相同的元素都只出现一次,unique(a,a+n)-a就是a中不相同元素的原创 2015-08-01 19:54:26 · 1845 阅读 · 0 评论 -
poj 2528 线段树+离散化+有颜色的区间覆盖
区间覆盖,和一般的区间覆盖问题的区别是每个覆盖的区间是有颜色的,最后要输出可见的颜色个数。对于每个区间操作,我们可以采用懒标记的思想,等到有其他区间覆盖过来时,将该区间的颜色向下传递。具体见代码。 #include #include #include using namespace std; struct node { int l,r; }; node a[10002]; i原创 2015-08-02 19:39:35 · 698 阅读 · 0 评论 -
CodeForces 19D 离散化+线段树+set
题意给出三种操作1.add x y将点(x,y)加入坐标系,2.remove x y将x y移出坐标系,3.find x y找到坐标系中在(x,y)的右上方且最近的点。 我们首先记录下每一步操作,进行离线处理。将横坐标进行离散化,这样的话我们可以利用lower_bound找到x对应离散化后的位置pos,对于每一个位置pos我们建立一个set,add操作时,我们将set中加入y即x[pos原创 2015-08-02 10:05:49 · 701 阅读 · 0 评论 -
poj 3468 线段树+懒标记
简单的线段树区间求和问题,每次改变区间值得时候采用懒标记的操作,等到下次经过这个区间的时候再将懒标记向下传递。#include #include using namespace std; int n,q; int a[100005]; long long sum[500005],lazy[500005]; void build(int l,int r,int k) { lazy[原创 2015-08-02 19:29:46 · 481 阅读 · 0 评论