传送门
http://poj.org/problem?id=3130

题意:

判断多边形的核是否存在

sol:

半平面交,满足所有半平面的区域显然就是核。

#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
using namespace std;
typedef long long ll;
typedef double s64;
int n,m;
inline int read()
{char c;int res,flag=0;while((c=getchar())>'9'||c<'0') if(c=='-')flag=1;res=c-'0';while((c=getchar())>='0'&&c<='9') res=(res<<3)+(res<<1)+c-'0';return flag?-res:res;
}
const int N=110;
const s64 eps=1e-7;
struct P
{s64 x,y;friend P operator +(P a,P b) {return (P){a.x+b.x,a.y+b.y};}friend P operator -(P a,P b) {return (P){a.x-b.x,a.y-b.y};}friend P operator *(P a,s64 b) {return (P){a.x*b,a.y*b};}friend s64 operator *(P a,P b) {return a.x*b.y-a.y*b.x;}friend s64 operator /(P a,P b) {return a.x*b.x+a.y*b.y;}
}a[N];
struct L
{P a,b,v;s64 ang;friend bool operator <(L a,L b) {return a.ang<b.ang||a.ang==b.ang&&a.v*(b.b-a.a)>0;}friend inline P inter(L a,L b){P nw=b.a-a.a;s64 tt=(nw*a.v)/(a.v*b.v);return b.a+b.v*tt;}friend inline bool jud(P a,L b) {return b.v*(a-b.a)<0;}
}q[N],l[N];
int main()
{
//  freopen("3130.in","r",stdin);
//  freopen(".out","w",stdout);while(true){n=read();if(!n) break;int tot=0;for(int i=1;i<=n;++i){a[i].x=read();a[i].y=read();}a[n+1]=a[1];for(int i=1;i<=n;++i){l[i].a=a[i];l[i].b=a[i+1];l[i].v=a[i+1]-a[i];l[i].ang=atan2(l[i].v.y,l[i].v.x);}sort(l+1,l+1+n);for(int i=1;i<=n;++i)if(l[i].ang!=l[i-1].ang) l[++tot]=l[i];n=tot;q[1]=l[1];q[2]=l[2];int R=2;int L=1;for(int i=3;i<=n;++i){while(L<R&&jud(inter(q[R-1],q[R]),l[i])) --R;while(L<R&&jud(inter(q[L],q[L+1]),l[i])) ++L;q[++R]=l[i];}while(L<R&&jud(inter(q[R],q[R-1]),q[L])) --R;while(L<R&&jud(inter(q[L+1],q[L]),q[R])) ++L;if(R-L+1>=3) printf("1\n");else printf("0\n");}
}

[poj3130][半平面交]How I Mathematician Wonder What You Are!相关推荐

  1. 半平面交练习(计算几何)

    四:半平面交 Rotating Scoreboard /*Author : lifehappy */ #include <cstdio> #include <cmath> #i ...

  2. UVA1396 Most Distant Point from the Sea(AM - ICPC - Tokyo - 2007)(计算几何,半平面交 + 二分答案)

    整理的算法模板合集: ACM模板 题目传送门 见<训练指南>P279 很明显就是一个二分答案,它问的是最远的点,直接枚举因为这里都是double类型的数所以有无限个点,我们可以直接二分. ...

  3. POJ 1474 Video Surveillance(半平面交)

    题意:半平面交求多边形内核(我明明及的我之前是会用kuangbin第一份版平面交的,现在怎么就不会用了呢,补第二份代码) 代码: #include<cstdio> #include< ...

  4. LA 2218 (半平面交) Triathlon

    题意: 有n个选手,铁人三项有连续的三段,对于每段场地选手i分别以vi, ui 和 wi匀速通过. 对于每个选手,问能否通过调整每种赛道的长度使得他成为冠军(不能并列). 分析: 粗一看,这不像一道计 ...

  5. POJ3335(半平面交)

    POJ3335 半平面交裸题 //poj3335 #include <cstdio> #include <cmath> #include <algorithm> # ...

  6. LA 3890 (半平面交) Most Distant Point from the Sea

    题意: 给出一个凸n边形,求多边形内部一点使得该点到边的最小距离最大. 分析: 最小值最大可以用二分. 多边形每条边的左边是一个半平面,将这n个半平面向左移动距离x,则将这个凸多边形缩小了.如果这n个 ...

  7. [BZOJ1007](HNOI2008)水平可见直线(半平面交习题)

    Description 在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆盖的.     例如,对于直线:   ...

  8. 模板:半平面交(计算几何)

    所谓半平面交,就是和"半平先生"当面交谈.顾名思义,这是一个源于日本的算法. (逃) 前言 感觉应用很灵活的一个算法,一切有两个变量的线性规划问题都可以转化为半平面交. 有时可能要 ...

  9. P4196-[CQOI2006]凸多边形/[模板]半平面交【计算几何】

    正题 题目链接:https://www.luogu.com.cn/problem/P4196 题目大意 给出nnn个凸多边形,求它们交的面积. 解题思路 就是把凸多边形上每条边作为一个半平面限制然后求 ...

最新文章

  1. 《Cell》新发现!“第二大脑”的反击
  2. 设计模式6——创建型模式之原型模式
  3. Anaconda中Jupyter notebook打开后闪退问题解决方法
  4. 后台服务系统之什么是dubbo
  5. 欺诈行为识别_使用R(编程)识别欺诈性的招聘广告
  6. 华平助广东海事局构建水上搜救应急指挥系统
  7. 漢城博殺的日子 (四)
  8. Linux 内核修正 5 年历史的严重 bug
  9. 学习HttpClient,从两个小例子开始
  10. 数学建模算法与应用(目录)
  11. arduino入门(一)arduino下载安装,炒鸡详解
  12. c4d如何把文字贴在物体表面_C4D在简模上整体和局部贴贴图的方法
  13. 从虚拟偶像到“网红”VUP,变现狂欢下的浮士德交易
  14. 信息系统项目管理师和PMP对比
  15. 【招聘】上海微创医疗机器人集团 - 软件工程师/图像算法工程师
  16. 为什么老程序员的效率如此高?编程速度快,Bug数量又少?
  17. 再见,搜不准的百度!你好,6个精准搜索技巧(还可以屏蔽广告哦~)
  18. 【Educoder】HTML答案 (HTML入门——基础、HTML入门——基本标签、HTML——表单类的标签)
  19. ARM嵌入式系统开发:软件设计与优化--第二章ARM处理器基础
  20. 搬砖篇--002 几何入门基础知识

热门文章

  1. linux下浏览器插件 打开本地程序,使用Url Schemes打开本地程序
  2. 计算机的英语歌,好听的英文歌,该怎么解决
  3. 如何根据商品条码查询商品名称和价格信息?
  4. 为什么用于开关电源的开关管一般用MOS管而不是三极管
  5. pathon和c语言的区别
  6. Kubernetes--学习笔记-4-Kubernetes 集群搭建过程中常用命令
  7. PACP学习笔记三:PCAP方法说明
  8. Unity SRP初识之URP
  9. python 日常记录笔记
  10. win10没有hosts文件解决方法