扫描线
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
poj1177[IOI1998]Picture (扫描线+离散化+线段树,求矩形周长并)
这人讲的很清楚了。我就再说一些细节。做了离散化之后时间和空间确实很优秀,但其实不做离散化也可以过。 扫描线这个算法,就是从左到右拿一根平行于y轴的线去扫描,遇到线段后进行处理,入边和出边。统计答案要注意。线段树负责维护的其实是一个线段覆盖的问题,我的每个节点表示的是一条线段,即a[l]a[r+1],所以我建树只建到m-1即可。复杂度应该是O(nlogn)O(nlogn)原创 2017-08-24 13:01:33 · 754 阅读 · 0 评论 -
hdu1255 覆盖的面积(线段树+扫描线+离散化,求矩形面积并)
给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积。和周长并套路差不多。。甚至简单了些我觉得。重点是维护重复了两次以上的线段长度。分类讨论即可。 以coverlen[2]为例: 如果cover==0 则coverlen[2]利用子树的coverlen[2]来更新 如果cover==1 则coverlen[2]利用子树的coverlen[1]来更新 如果cover==2 则cover原创 2017-08-24 15:14:27 · 324 阅读 · 0 评论 -
poj1151 Atlantis(线段树+扫描线+离散化,求矩形面积并)
写过的裸题,还敲了半天。。。太蒻原创 2017-09-23 19:31:01 · 348 阅读 · 0 评论 -
poj2482 Stars in Your Window(线段树+扫描线+离散化)
这题目好浪漫啊~~~~~~~~~~~~~ 说正事:对于每个点,我们把它变成一个范围,这个范围的意义是,只要矩形的右上角在这个范围内,这个点就可以被这个矩形覆盖。则这个范围显然就是(x,y,x+w-1,y+h-1)的一个矩形。现在我们的题目就变为:平面上有n个矩形,每个矩形内的点都有一个权值,可以互相叠加,问你权值最大的点是多少?我们可以用扫描线解决这个问题,按x排序,每次入边就是对区间[y1,y2原创 2017-09-24 19:59:31 · 458 阅读 · 0 评论 -
bzoj1218 [HNOI2003]激光炸弹(二维前缀和+暴力/线段树+离散化+扫描线)
n=5000,暴力O(n^2)预处理二维前缀和,暴力O(n^2)枚举答案矩阵。 当然正解是O(nlogn)的线段树+扫描线+离散化的老套路。。详见poj2482原创 2017-09-24 16:13:46 · 416 阅读 · 0 评论 -
CIA9 彩色弹珠(线段树+扫描线)
给你一个n个数的序列,所有数值<=n,让你求价值最大的区间的值。一个区间的价值定义为:只出现了一次的数值的个数。考虑选定右端点,决策在于左端点在哪里,我们用线段树维护一下左端点为x时的答案。对于每个数值,都在一个范围内是“独一无二”的,当右端点进入这个区间的时候,他开始有贡献,当右端点出了这个区间时,他就不再有贡献了。原创 2017-11-09 18:51:40 · 568 阅读 · 0 评论 -
luogu3875 [TJOI2010]被污染的河流(矩形面积并,扫描线+线段树)
就是求面积矩形并。wa了好久。我好菜啊。原创 2018-01-01 21:04:29 · 543 阅读 · 0 评论