对每个关键点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,几何的更多相关文章

  1. 关于Three.js基本几何形状之SphereGeometry球体学习

    一.有关球体SphereGeometry构造函数参数说明 <1>.SphereGeometry(radius, widthSegments, heightSegments, phiStar ...

  2. 几何服务,cut功能测试

    关于几何服务 几何服务用于辅助应用程序执行各种几何计算,如缓冲区.简化.面积和长度计算以及投影.在 ArcGIS Server 管理器中启动几何服务之后,您才能够在应用程序开发过程中使用该服务. 问题 ...

  3. 几何服务,cut功能,输入要素target(修改后)内容。

    几何服务,cut功能测试,输入要素target(修改后)内容. {"displayFieldName":"","fieldAliases": ...

  4. 几何服务,cut功能,输入要素target(修改前)内容。

    几何服务,cut功能测试,输入要素target(修改前)内容. {"geometryType":"esriGeometryPolyline","geo ...

  5. 如何让你的UWP应用程序无缝调用几何作图

    有时候需要编辑一些几何图形,如三角形,圆锥曲线等,在UWP应用中加入这些几何作图功能是件费时间又很难做好的事.其实Windows 10 应用商店中已有一些专业的几何作图工具了,那么能借来一用吗?答案是 ...

  6. poj 2031Building a Space Station(几何判断+Kruskal最小生成树)

    /* 最小生成树 + 几何判断 Kruskal 球心之间的距离 - 两个球的半径 < 0 则说明是覆盖的!此时的距离按照0计算 */ #include<iostream> #incl ...

  7. NOIP2002矩形覆盖[几何DFS]

    题目描述 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4(0,7),见图一. 这 ...

  8. DOM 元素节点几何量与滚动几何量

    当在 Web 浏览器中查看 HTML 文档时,DOM 节点被解析,并被渲染成盒模型(如下图),有时我们需要知道一些信息,比如盒模型的大小,盒模型在浏览器中的位置等等,本文我们就来详细了解下元素节点的几 ...

  9. Get it,你离几何达人不远了!

    对于爱学几何的人,是否存在这样的困扰:没有标准的尺规工具,图形画的不标准,理解上总是出错......整天在纸上画图,浪费大把大把的时间......几何图形画的不美观,在别人面前都拿不出手,公开课上都没 ...

随机推荐

  1. POJ 2513 无向欧拉通路+字典树+并查集

    题目大意: 有一堆头尾均有颜色的木条,要让它们拼接在一起,拼接处颜色要保证相同,问是否能够实现 这道题我一开始利用map<string,int>来对颜色进行赋值,好进行后面的并查操作以及欧 ...

  2. 【bzoj1552/3506】[Cerc2007]robotic sort splay翻转,区间最值

    [bzoj1552/3506][Cerc2007]robotic sort Description Input 输入共两行,第一行为一个整数N,N表示物品的个数,1<=N<=100000. ...

  3. SpringBoot自动配置的源码解析

    首先,写源码分析真的很花时间,所以希望大家转的时候也请注明一下,Thanks♪(・ω・)ノ SpringBoot最大的好处就是对于很多框架都默认的配置,让我们开发的时候不必为了大一堆的配置文件头疼,关 ...

  4. 如何改变linux系统的只读文件的权限

    vim 编辑可以在命令模式输入 :wq! 保存退出可以用chmod 命令修改文件权限. chmod命令是非常重要的,用于改变文件或目录的访问权限.用户用它控制文件或目录的访问权限.该命令有两种用法.一 ...

  5. 解决使用FusionCharts以后从后台获取数据中文乱码的问题

    在使用FusionCharts 的时候 ,发现了一个非常奇怪的问题, 一旦在页面上加入一个chart组件, 不管给不给数据, 从后台取到的数据, 中文就全变成了乱码. 由于我使用的是object ar ...

  6. python学习之 - XML

    xml模块定义:实现不同语言或程序之间进行数据交换的协议.格式如下:通过<>节点来区别数据结构如:<load-on-startup(这个是标签) test="value&q ...

  7. CodeForces 592A PawnChess

    简单暴力模拟. #include<cstdio> #include<cstring> #include<cmath> #include<algorithm&g ...

  8. poj——3118 Arbiter

      Arbiter 题目描述:      “仲裁者”是<星际争霸>科幻系列中的一种太空船.仲裁者级太空船是神族的战船,专门提供精神力支援.不像其他战船的人员主要是战士阶级,仲裁者所承载的都 ...

  9. poj——2771 Guardian of Decency

    poj——2771    Guardian of Decency Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5916   ...

  10. 查看MySQL系统变量的命令

    用了好长时间mysql,却没有用心记住一些有用的东西,加油! mysql> SHOW VARIABLES; +---------------------------------+-------- ...