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,你离几何达人不远了!
对于爱学几何的人,是否存在这样的困扰:没有标准的尺规工具,图形画的不标准,理解上总是出错......整天在纸上画图,浪费大把大把的时间......几何图形画的不美观,在别人面前都拿不出手,公开课上都没 ...
随机推荐
- 使用SqlParameter.SqlDbType和SqlParameter.Size时需要注意的地方
1.DbParameter类是SqlParameter和OracleParameter类的父类.DbParameter.Size用来获取或设置列中数据的最大尺寸(只对文本数据有用). 2.数据类型Ch ...
- HDU 3527 SPY
http://poj.org/problem?id=3615 基础题 狂STL #include <bits/stdc++.h> using namespace std; set<s ...
- 2016 Multi-University Training Contest 3 solutions BY 绍兴一中
1001 Sqrt Bo 由于有\(5\)次的这个限制,所以尝试寻找分界点. 很容易发现是\(2^{32}\),所以我们先比较输入的数字是否比这个大,然后再暴力开根. 复杂度是\(O(\log\log ...
- nginx学习网站收录
1.菜鸟教程 2. Nginx中文 3. Nginx官网 参考:http://www.cnblogs.com/knowledgesea/p/5175711.html
- 解决安装oracle11g r2时提示pdksh conflicts with ksh-20100621-2.el6.i686问题
http://blog.csdn.net/linghao00/article/details/7943740 http://www.2cto.com/os/201306/218566.html 在Ce ...
- MySQL学习系列之触发器
触发器简介 触发器作用: 监控某种事件并触发某种动作 触发语法: CREATE TRIGGER trigger_name trigger_event ON tbl_name FOR EACH ROW ...
- 推荐-zabbix原理篇
推荐-zabbix原理篇(1) 提交 我的留言 加载中 已留言 本文大纲 snmp介绍 监控流程 开源监控工具zabbix zabbix监控功能的实现 支持数据库存储类型 Zabbix架构中的组件 Z ...
- Highways POJ 2485【Prim】
Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...
- hdu1042 (模拟n!)
题目大意: 求 n.(可能会超过整数范围,这里用数组模拟n!的值) pid=1042">http://acm.hdu.edu.cn/showproblem.php?pid=1042 A ...
- react 项目中 引入 bootstrap
react-bootstrap是一个非常受欢迎的针对react封装过的bootstrap,它本身不包含css,所以也是需要使用bootstrap原生库. 在create-react-app建的项目目录 ...