BZOJ4814,几何
对每个关键点i,将每个三角形缩成一个线段(因为三角形不相交),然后把线段两端点 和其他关键点一起 以i为中心点 极角排序。
扫一圈。扫到一个关键点j时, 判断当前最靠近i的线段是否遮盖i到j的路径, 因为对同一个点i,线段之间的相对关系是不变的,所以可以用堆维护加线段删线段,
#include <bits/stdc++.h>
#define LL long long
using namespace std;
int T,n,m,p,q,k,t,x,y,z,ans,d[],e[];
struct node{int x,y,d;}a[],b[],c[][];
LL operator *(node a,node b){return (LL)a.x*b.y-(LL)a.y*b.x;}
node operator -(node a,node b){return (node){a.x-b.x,a.y-b.y,a.d};}
bool hi(int u,int v){ // v是不是比u更接近中心点
LL x=(c[v][]-c[u][])*(c[u][]-c[u][]),y=(c[v][]-c[u][])*(c[u][]-c[u][]);
if (x>=&&y>=) return ; if (x<=&&y<=) return ;
return (c[u][]-c[v][])*(c[v][]-c[v][])>=&&(c[u][]-c[v][])*(c[v][]-c[v][])>=;
}
bool cmp(node u,node v){ LL x=(u-a[])*(v-a[]); if (!x) return u.d>v.d; else return x>;}
void join(int x){
int i=++T;
while (i>&&hi(d[i>>],x)) e[d[i]=d[i>>]]=i,i>>=;
d[i]=x; e[x]=i;
}
void del(int x){
if (e[x]==T) {e[x]=d[T--]=; return;}
int i=e[x]; e[x]=; x=d[i]=d[T]; d[T--]=;
while (i>&&hi(d[i>>],x)) e[d[i]=d[i>>]]=i,i>>=;
while (i<<<=T&&hi(x,d[i<<])||i<<<T&&hi(x,d[i<<^]))
i<<==T||hi(d[i<<^],d[i<<])?
(e[d[i]=d[i<<]]=i,i<<=):(e[d[i]=d[i<<^]]=i,i=i<<^);
d[i]=x; e[x]=i;
}
int main(){
scanf("%d%d",&n,&m); if (n==) {puts(""); return ;}
for (t=;t<=n;++t) scanf("%d%d",&a[t].x,&a[t].y);
for (int i=;i<=m;++i)
for (int j=;j<;++j)
a[++t].d=i,scanf("%d%d",&a[t].x,&a[t].y),c[i][j]=a[t];
t=n+m+m;
for (int i=;i<=n;++i){
while (T) e[d[T]]=,d[T--]=;
swap(a[i],a[]); p=; q=t+; b[]=a[];
for (int j=;j<=n;++j) a[j].x<a[].x?b[++p]=a[j]:b[--q]=a[j];
for (int j=;j<=m;++j){
sort(c[j],c[j]+,cmp);
c[j][].x<a[].x?b[++p]=c[j][]:b[--q]=c[j][];
c[j][].x<a[].x?(b[++p]=c[j][],b[p].d*=-):(b[--q]=c[j][],b[q].d*=-);
}
if (<=p) sort(b+,b+p+,cmp);
if (p<t)sort(b+p+,b+t+,cmp);
for (int j=;j<=m;++j)
if ((c[j][]-a[])*(b[]-a[])>&&(c[j][]-a[])*(b[]-a[])<=) join(j);
for (int j=;j<=t;++j)
if (!b[j].d){
if (!T||(c[d[]][]-c[d[]][])*(b[j]-c[d[]][])>) ++ans;
}else
if (b[j].d>) join(b[j].d); else del(-b[j].d);
}
printf("%d",ans>>);
return ;
}
秋姉妹のなく頃に
n^2*log*计算几何自带大常数。。。然而跑的还算挺快的
BZOJ4814,几何的更多相关文章
- 关于Three.js基本几何形状之SphereGeometry球体学习
一.有关球体SphereGeometry构造函数参数说明 <1>.SphereGeometry(radius, widthSegments, heightSegments, phiStar ...
- 几何服务,cut功能测试
关于几何服务 几何服务用于辅助应用程序执行各种几何计算,如缓冲区.简化.面积和长度计算以及投影.在 ArcGIS Server 管理器中启动几何服务之后,您才能够在应用程序开发过程中使用该服务. 问题 ...
- 几何服务,cut功能,输入要素target(修改后)内容。
几何服务,cut功能测试,输入要素target(修改后)内容. {"displayFieldName":"","fieldAliases": ...
- 几何服务,cut功能,输入要素target(修改前)内容。
几何服务,cut功能测试,输入要素target(修改前)内容. {"geometryType":"esriGeometryPolyline","geo ...
- 如何让你的UWP应用程序无缝调用几何作图
有时候需要编辑一些几何图形,如三角形,圆锥曲线等,在UWP应用中加入这些几何作图功能是件费时间又很难做好的事.其实Windows 10 应用商店中已有一些专业的几何作图工具了,那么能借来一用吗?答案是 ...
- poj 2031Building a Space Station(几何判断+Kruskal最小生成树)
/* 最小生成树 + 几何判断 Kruskal 球心之间的距离 - 两个球的半径 < 0 则说明是覆盖的!此时的距离按照0计算 */ #include<iostream> #incl ...
- NOIP2002矩形覆盖[几何DFS]
题目描述 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4(0,7),见图一. 这 ...
- DOM 元素节点几何量与滚动几何量
当在 Web 浏览器中查看 HTML 文档时,DOM 节点被解析,并被渲染成盒模型(如下图),有时我们需要知道一些信息,比如盒模型的大小,盒模型在浏览器中的位置等等,本文我们就来详细了解下元素节点的几 ...
- Get it,你离几何达人不远了!
对于爱学几何的人,是否存在这样的困扰:没有标准的尺规工具,图形画的不标准,理解上总是出错......整天在纸上画图,浪费大把大把的时间......几何图形画的不美观,在别人面前都拿不出手,公开课上都没 ...
随机推荐
- [HDU3065]病毒持续侵袭中(AC自动机)
传送门 AC自动机的又一模板,统计每个字符串在文本中的次数. 所以就不需要vis数组了. ——代码 #include <cstdio> #include <cstring> # ...
- 斗地主(codevs 4610)
题目描述 Description 牛牛最近迷上了一种叫斗地主的扑克游戏. 斗地主是一种使用黑桃.红心.梅花.方片的 A 到 K 加上大小王的共 54 张牌来进行的扑克牌游戏.在斗地主中, 牌的大小关系 ...
- [NOIP1998] 普及组
三连击 题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数. 输入输出格式 输入格式: 木有输入 输出格式: 若干行, ...
- poj3694+hdu2460 求桥+缩点+LCA/tarjan
这个题使我更深理解了TARJAN算法,题意:无向图,每添加一条边后文桥的数量,三种解法:(按时间顺序),1,暴力,每每求桥,听说这样能过,我没过,用的hash判重,这次有俩个参数(n->10w, ...
- P1396 营救 洛谷
https://www.luogu.org/problem/show?pid=1396 题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起 ...
- 洛谷 P1731 [NOI1999]生日蛋糕
P1731 [NOI1999]生日蛋糕 题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M ...
- 转 gSOAP中使用TCP协议传输数据
一 模型 TCP/IP是一个协议族(Internet protocol suite),包含众多的协议,传输控制协议(TCP)和网际协议(IP)分属不同的层次,是保证数据完整传输的两个基本的重要协议. ...
- npm Error: Cannot find module 'proto-list'
Error: Cannot find module 'proto-list' at Function.Module._resolveFilename (module.js:338:15) at Fun ...
- Docker+Drone做Java/Tomcat的CI服务
1. 安装Docker(略过) 2. 编写docker-compose.yaml version: '2' services: drone-server: image: drone/drone:0.8 ...
- Vs2012在Linux开发中的应用(5):项目属性的定义
VS的项目属性表实际上是由一系列的XML文件定义的,都存放在C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\2052文件夹下.我们全然能够 ...