poj3130 (半平面交
题意:判断是否存在内核。
半平面交存板子。
/* 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 (半平面交的更多相关文章
- 【BZOJ-4515】游戏 李超线段树 + 树链剖分 + 半平面交
4515: [Sdoi2016]游戏 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 304 Solved: 129[Submit][Status][ ...
- poj3335 半平面交
题意:给出一多边形.判断多边形是否存在一点,使得多边形边界上的所有点都能看见该点. sol:在纸上随手画画就可以找出规律:按逆时针顺序连接所有点.然后找出这些line的半平面交. 题中给出的点已经按顺 ...
- POJ3525 半平面交
题意:求某凸多边形内部离边界最远的点到边界的距离 首先介绍半平面.半平面交的概念: 半平面:对于一条有向直线,它的方向的左手侧就是它所划定的半平面范围.如图所示: 半平面交:多个半平面的交集.有点类似 ...
- POJ 3130 How I Mathematician Wonder What You Are! /POJ 3335 Rotating Scoreboard 初涉半平面交
题意:逆时针给出N个点,求这个多边形是否有核. 思路:半平面交求多边形是否有核.模板题. 定义: 多边形核:多边形的核可以只是一个点,一条直线,但大多数情况下是一个区域(如果是一个区域则必为 ).核内 ...
- bzoj2618[Cqoi2006]凸多边形 半平面交
这是一道半平面交的裸题,第一次写半平面交,就说一说我对半平面交的理解吧. 所谓半平面交,就是求一大堆二元一次不等式的交集,而每个二元一次不等式的解集都可以看成是在一条直线的上方或下方,联系直线的标准方 ...
- POJ 3384 Feng Shui 半平面交
题目大意:一个人很信"Feng Shui",他要在房间里放两个圆形的地毯. 这两个地毯之间可以重叠,可是不能折叠,也不能伸到房间的外面.求这两个地毯可以覆盖的最大范围.并输出这两个 ...
- BZOJ2618[Cqoi2006]凸多边形——半平面交
题目描述 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n=2时,两个凸多边形如下图: 则相交部分的面积为5.233. 输入 第一行有一个整数n,表示凸多边形的个数,以下依次描述各个多边形.第 ...
- 洛谷P3222 [HNOI2012]射箭(计算几何,半平面交,双端队列)
洛谷题目传送门 设抛物线方程为\(y=ax^2+bx(a<0,b>0)\),我们想要求出一组\(a,b\)使得它尽可能满足更多的要求.这个显然可以二分答案. 如何check当前的\(mid ...
- bzoj 4445 小凸想跑步 - 半平面交
题目传送门 vjudge的快速通道 bzoj的快速通道 题目大意 问在一个凸多边形内找一个点,连接这个点和所有顶点,使得与0号顶点,1号顶点构成的三角形是最小的概率. 假设点的位置是$(x, y)$, ...
随机推荐
- 【产品设计】【转】APP界面设计规范编写指南(人人都是产品经理)
转自 :http://www.woshipm.com/ucd/608557.html 作者:EID_UX_DESIGN,微信公众号:EID_center 原文地址:http://www.ui.cn/d ...
- suricata HTTP关键字
http request http request请求包括请求行.请求头.空行和内容.一个普通的request请求如下: http response http response应答包括应答行,头部,空 ...
- Lock的实现原理
1. Lock 的简介及使用 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制.本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\l ...
- python3 json.dump乱码问题
json.dumps(obj, ensure_ascii=False) ensure_ascii = True,会忽略掉non-ascii字符
- Optional 的基本用法
参考: https://www.cnblogs.com/xingzc/p/5778090.html http://www.runoob.com/java/java8-optional-class.ht ...
- Django之如何预防csrf功能的方式 form提交与ajax提交
1. 什么是csrf认证: 主要是防止别人恶意登录你的账户信息用的: 2. csrf认证在django的实现方式: 分为两种, 一种是from表单提交的方式,另一种是ajax提交实现方式 前端: &l ...
- Delphi中Chrome Chromium、Cef3学习笔记(一)
原文 http://blog.csdn.net/xtfnpgy/article/details/46635225 官方下载地址:https://cefbuilds.com/ CEF简介: 嵌入 ...
- windows下Mysql8.0.12安装详解
MySQL的安装过程还是比较繁琐,为了以后安装节约时间,将其详细安装过程总结如下: 1>下载对应版本 下载地址:https://dev.mysql.com/downloads/mysql/ 2& ...
- 尚硅谷springboot学习24-错误处理
1.SpringBoot默认的错误处理机制 默认效果: 1).浏览器,返回一个默认的错误页面
- 吴裕雄 python深度学习与实践(9)
import numpy as np import tensorflow as tf inputX = np.random.rand(100) inputY = np.multiply(3,input ...