题意:判断是否存在内核。

  半平面交存板子。

/*  gyt
Live up to every day */
#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<cstring>`
#include<queue>
#include<set>
#include<string>
#include<map>
#include <time.h>
#define PI acos(-1)
using namespace std;
typedef long long ll;
typedef double db;
const int maxn = 1e4+;
const ll maxm = 1e7;
const ll mod = 1e9 + ;
const int INF = 0x3f3f3f;
const int inf =0x3f3f3f;
const db eps = 1e-;
const int kind=;
struct point {
double x,y;
point(double x=,double y=): x(x),y(y){}
}an[maxn], bn[maxn], cn[maxn];
typedef point Vector;
Vector operator +(point a,point b) {
return Vector(a.x+b.x,a.y+b.y);
}
Vector operator *(point a,double b) {
return Vector(a.x*b,a.y*b);
}
Vector operator -(point a,point b) {
return Vector(a.x-b.x,a.y-b.y);
}
double dot(Vector a,Vector b) { //内积
return a.x*b.x+a.y*b.y;
}
double cross(Vector a,Vector b) { //外积
return a.x*b.y-a.y*b.x;
}
int n, m;
db A, B, C;
//获取Ax+By+c=0
void getline(point a, point b) {
A=b.y-a.y;
B=a.x-b.x;
C=b.x*a.y-a.x*b.y;
}
//getline()得到的直线与点a,b构成直线的交点
point intersect(point a, point b) {
db u=fabs(A*a.x+B*a.y+C);
db v=fabs(A*b.x+B*b.y+C);
point ans;
ans.x=(a.x*v+b.x*u)/(u+v);
ans.y=(a.y*v+b.y*u)/(u+v);
return ans;
}
void cut() {
int cnt=;
for (int i=; i<=m; i++) {
if (A*cn[i].x+B*cn[i].y+C>=) bn[++cnt]=cn[i];
else {
if (A*cn[i-].x+B*cn[i-].y+C>) {
bn[++cnt]=intersect(cn[i-], cn[i]);
}
if (A*cn[i+].x+B*cn[i+].y+C>) {
bn[++cnt]=intersect(cn[i+], cn[i]);
}
}
}
for (int i=; i<=cnt; i++) {
cn[i]=bn[i];
}
cn[]=bn[cnt];
cn[cnt+]=bn[];
m=cnt;
}
void deal() {
for (int i=; i<=n; i++) {
cn[i]=an[i];
}
an[n+]=an[];
cn[n+]=an[];
cn[]=an[n];
m=n;
for (int i=; i<=n; i++) {
getline(an[i], an[i+]);
cut();
}
}
void solve() {
while(scanf("%d", &n)!=EOF && n) {
for (int i=; i<=n; i++) {
scanf("%lf%lf", &an[i].x, &an[i].y);
}
reverse(an+, an++n);
deal();
if (m) puts("");
else puts("");
}
}
int main() {
int t = ;
//freopen("in.txt", "r", stdin);
// scanf("%d", &t);
while(t--)
solve();
return ;
}

poj3130 (半平面交的更多相关文章

  1. 【BZOJ-4515】游戏 李超线段树 + 树链剖分 + 半平面交

    4515: [Sdoi2016]游戏 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 304  Solved: 129[Submit][Status][ ...

  2. poj3335 半平面交

    题意:给出一多边形.判断多边形是否存在一点,使得多边形边界上的所有点都能看见该点. sol:在纸上随手画画就可以找出规律:按逆时针顺序连接所有点.然后找出这些line的半平面交. 题中给出的点已经按顺 ...

  3. POJ3525 半平面交

    题意:求某凸多边形内部离边界最远的点到边界的距离 首先介绍半平面.半平面交的概念: 半平面:对于一条有向直线,它的方向的左手侧就是它所划定的半平面范围.如图所示: 半平面交:多个半平面的交集.有点类似 ...

  4. POJ 3130 How I Mathematician Wonder What You Are! /POJ 3335 Rotating Scoreboard 初涉半平面交

    题意:逆时针给出N个点,求这个多边形是否有核. 思路:半平面交求多边形是否有核.模板题. 定义: 多边形核:多边形的核可以只是一个点,一条直线,但大多数情况下是一个区域(如果是一个区域则必为 ).核内 ...

  5. bzoj2618[Cqoi2006]凸多边形 半平面交

    这是一道半平面交的裸题,第一次写半平面交,就说一说我对半平面交的理解吧. 所谓半平面交,就是求一大堆二元一次不等式的交集,而每个二元一次不等式的解集都可以看成是在一条直线的上方或下方,联系直线的标准方 ...

  6. POJ 3384 Feng Shui 半平面交

    题目大意:一个人很信"Feng Shui",他要在房间里放两个圆形的地毯. 这两个地毯之间可以重叠,可是不能折叠,也不能伸到房间的外面.求这两个地毯可以覆盖的最大范围.并输出这两个 ...

  7. BZOJ2618[Cqoi2006]凸多边形——半平面交

    题目描述 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n=2时,两个凸多边形如下图: 则相交部分的面积为5.233. 输入 第一行有一个整数n,表示凸多边形的个数,以下依次描述各个多边形.第 ...

  8. 洛谷P3222 [HNOI2012]射箭(计算几何,半平面交,双端队列)

    洛谷题目传送门 设抛物线方程为\(y=ax^2+bx(a<0,b>0)\),我们想要求出一组\(a,b\)使得它尽可能满足更多的要求.这个显然可以二分答案. 如何check当前的\(mid ...

  9. bzoj 4445 小凸想跑步 - 半平面交

    题目传送门 vjudge的快速通道 bzoj的快速通道 题目大意 问在一个凸多边形内找一个点,连接这个点和所有顶点,使得与0号顶点,1号顶点构成的三角形是最小的概率. 假设点的位置是$(x, y)$, ...

随机推荐

  1. 解决Ubuntn安装中文语言包却不能切换

    记一次奇葩的经历吧,第一次在VM中安装Ubuntn16.04安装完成后的确出现了语言包安装提示,就这样毫无压力的一直用着中文版的Ubuntn. 习惯了一段时间后第二次安装一样的安装方式却始终是英文界面 ...

  2. python导入requests库一直报错原因总结 (文件名与库名冲突)

    花了好长时间一直在搞这个 源代码: 一直报如下错误: 分析原因: 总以为没有导入requests库,一直在网上搜索各种的导入库方法(下载第三方的requests库,用各种命令工具安装),还是报错 后来 ...

  3. Vim 命令、操作、快捷键

    打开单个文件:vim file 同时打开多个文件:vim file1 file2 file3 ... 在vim窗口中打开一个新文件 :  :open file 在新窗口中打开文件: :split fi ...

  4. css学习2

    1.垂直居中 -父元素高度确定的单行文本: 设置父元素的 height 和 line-height  高度一致来实现的.(height: 该元素的高度:line-height: 行高(行间距),指在文 ...

  5. 二、Jmeter脚本开发

    目录 1.Jmeter协议录制 1.Jmeter协议录制 1.1 dboy进行录制 badboy下载地址:http://www.badboy.com.au/download/add badboy是一个 ...

  6. __getattr__ __delattr__ __setattr__ __getattribute__使用(重写python提供的错误信息)

    自己定义了这些attr 查找删除设置就会触发自己定义的逻辑,如果不重新,pyton会提供自己报错信息class Room: def __init__(self,name): self.name = n ...

  7. idea导入项目

    1. 2.导入项目 3.右键项目选择web 4.编辑添加tomcat 5.添加jar.包 6. 7.右键put into 8.安装tomcat 9.引入tomcat 10.把项目布署到tomcat

  8. 尚硅谷springboot学习24-错误处理

    1.SpringBoot默认的错误处理机制 默认效果: ​ 1).浏览器,返回一个默认的错误页面

  9. Helm简介

    什么是Helm 微服务和容器化给复杂应用部署与管理带来了极大的挑战.Helm是目前Kubernetes服务编排领域的唯一开源子项目,作为Kubernetes应用的一个包管理工具,可理解为Kuberne ...

  10. maven学习-基本入门用法

    一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录(本 ...