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)$, ...
随机推荐
- 如何将maven依赖项打进jar包,将一个完整的项目打进jar包
目的:我的目的就是将项目所有的文件,包括pom文件中依赖的jar包都打进一个jar包里面. 过程:将下面的内容放到pom文件里面. </dependencies> <build> ...
- ylbtech-协议-网络-安全协议:HTTPS
ylbtech-协议-网络-安全协议:HTTPS HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext ...
- ADB server didn't ACK failed to start daemon 5037
错误信息: C:\Users\lizy>adb devices adb devicesadb server is out of date. killing... ADB server didn ...
- REST framwork之分页器,路由器,响应器
一 REST framwork分页器: from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination ...
- 关于element-ui日期选择器disabledDate使用心得
实现目的: 使用type="data"类型实现具备开始日期与结束日期组件(ps:element有自带的type="daterange"类型的组件可以实现此功能) ...
- win10 64 + VS2010 + Opencv 2.4.9 + HIKVISION(海康)
海康相机型号:DS-2CD2512F-IS 参考连接http://blog.csdn.net/wanghuiqi2008/article/details/31404571 先上效果图 其中,在连接时遇 ...
- 学习笔记:FIS3
http://fis.baidu.com/ FIS3官网 [配环境]: 1.先要安装node.js https://nodejs.org/en/ NODE.js官网(下载这个,下载后运行: http ...
- scp: command not found
scp 不能用? [root@doc]# scp jdk-8u144-linux-x64.tar.gz root@10.10.10.17:/root/ root@10.10.10.17's passw ...
- 多线程利器-队列(queue)
#队列有3中模式,先进先出,先进后出,优先级 1:先进先出import queue q = queue.Queue() #默认是先进先出q.put(12)q.put('jack')q.put({'na ...
- ABAP-IDOC配置
转载路径: http://www.cnblogs.com/jiangzhengjun/p/4292135.html#_Toc411677431 https://wenku.baidu.com/view ...