扫描线
文章平均质量分 52
DZYO
Never stop
展开
-
BZOJ4826: [Hnoi2017]影魔(扫描线+树状数组)
传送门题意: 有n个点,横纵坐标都是1−n1-n的排列,每次询问[l,r][l,r],求在[l,r][l,r]中分别满足一下条件的点对(i,j)(i,j): (定义max(l,r)max(l,r)为横坐标ll到rr中纵坐标的最大值) 1.y[i]>max(l,r)且y[j]>max(l,r)y[i]\gt max(l,r)且y[j]\gt max(l,r). 2.y[i]>max(l,r)>原创 2017-09-21 19:59:31 · 484 阅读 · 0 评论 -
poj2932:Coneology(扫描线)
传送门题意: 给n个两两不相交的圆,求不被其他圆所包含的圆。(n≤\le40000 )题解:扫描线 一个圆只能被他y左边的前驱后继所包含(当然圆的左右端点要包含这个圆)。直接套set。#include<cstdio>#include<algorithm>#include<set>using namespace std;const int Maxn=4e4+50;int n,tot,an原创 2017-10-05 02:03:39 · 250 阅读 · 0 评论 -
UOJ#57:[WC2013]平面图(最小左转法+点定位)
传送门 在一个平面图中有 nn 个顶点和 mm 条直线段,第 ii 个顶点的坐标为 (xi,yi)(xi,yi),第 jj 条直线段连接顶点 uju_j 和顶点 vjv_j。权值为 hjh_j,除顶点 uju_j 和 vjv_j 外直线段 jj 不经过其他的顶点。任意两条直线段如果存在公共点,则该公共点一定是一个顶点,此时这两条直线段都会连接这个顶点。对于任意的两个顶点 xx 和 yy,总是可以原创 2017-11-24 20:56:32 · 974 阅读 · 0 评论 -
BZOJ1035: [ZJOI2008]Risk(最小左转法+点定位)
传送门题意: 给一个平面图和图上的一些点,问这些点与哪些点在相邻的区域。题解:首先用最小左转法确定每一条线左边的区域。 接下来用扫描线做最小点定位。 最后统计在相邻区域的点对即可。有一个比较难处理的地方是区域相互包含,一开始不知道怎么做就去膜了Claris题解,发现对于每个不同的联通块,确定最左上方的点,做一遍扫描线,之后内层向外层连一条边就好了。 还有凸包的比较函数比较难调(我调了两天。。原创 2017-11-23 15:35:14 · 721 阅读 · 0 评论 -
Codeforces Round #468 (Div. 1) D: Game with Tokens(扫描线)
传送门题解: 注意到白点不被挡住的情况一定是白点一直往一个方向走。不妨考虑一个黑点能挡住某个方向的哪些白点,画图可以发现是四周的三角形区域。对于三角形区域,可以通过坐标旋转来转化为矩阵区域,之后问题便转化为:给四种颜色的一些区域,问有哪些区域同时有四种颜色,直接扫描线即可。(细节有点多直接抄的楼教主的代码。。)#include <bits/stdc++.h>...原创 2018-03-07 20:51:28 · 350 阅读 · 0 评论 -
Codeforces Round #336 (Div. 1)E:Cross Sum(二分+扫描线)
传送门题解: 二分答案,然后检查当前范围(圆)中直线的交点是否超过mmm。在圆中检查两条直线相交非常方便,只需要把直线与圆的交点做出来,相交直线一定形如ABABABABABAB的形式。 那么排一边序直接做扫描线,用树状数组维护区间和。最后查询的时候要查询l−epsl−epsl-eps,因为lll的点可能很多。 #include <bits/stdc++.h>t...原创 2018-02-25 12:47:34 · 358 阅读 · 0 评论