题意:求n个凸多边形的交面积。

半平面交模板题。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
const int N=+,inf=0x3f3f3f3f;
const db pi=acos(-),eps=1e-;
struct P {
db x,y;
P operator-(P b) {return {x-b.x,y-b.y};}
P operator+(P b) {return {x+b.x,y+b.y};}
P operator*(db b) {return {x*b,y*b};}
bool operator<(const P& b)const {return x!=b.x?x<b.x:y<b.y;}
bool operator==(const P& b)const {return x==b.x&&y==b.y;}
} p[N],hpi[N];
db cross(P a,P b) {return a.x*b.y-a.y*b.x;}
struct Line {
P p,v;
db rad()const {return atan2(v.y,v.x);};
} line[N],q[N];
bool onleft(P p,Line a) {return cross(a.v,p-a.p)>;}
P its(Line a,Line b) {
P v=a.p-b.p;
db t=cross(b.v,v)/cross(a.v,b.v);
return a.p+a.v*t;
}
bool operator<(const Line& a,const Line& b) {
db r1=a.rad(),r2=b.rad();
return fabs(r1-r2)>eps?r1<r2:onleft(a.p,b);
}
int n,m,nl,nhpi;
void HPI() {
sort(line,line+nl);
int hd=,tl=-;
for(int i=; i<nl; ++i) {
if(hd<=tl&&fabs(line[i].rad()-q[tl].rad())<eps)continue;
if(hd<tl&&cross(q[hd].v,q[tl].v)<&&onleft(its(q[hd],q[tl]),line[i]))continue;
for(; hd<tl&&!onleft(its(q[tl-],q[tl]),line[i]); --tl);
for(; hd<tl&&!onleft(its(q[hd],q[hd+]),line[i]); ++hd);
q[++tl]=line[i];
}
nhpi=;
for(int i=hd; i<tl; ++i)hpi[nhpi++]=its(q[i],q[i+]);
hpi[nhpi++]=its(q[tl],q[hd]);
}
db area() {
db ret=;
for(int i=; i<nhpi-; ++i)ret+=cross(hpi[i]-hpi[],hpi[i+]-hpi[]);
return fabs(ret/);
} int main() {
for(scanf("%d",&m); m--;) {
scanf("%d",&n);
for(int i=; i<n; ++i)scanf("%lf%lf",&p[i].x,&p[i].y);
for(int i=; i<n; ++i)line[nl++]= {p[i],p[(i+)%n]-p[i]};
}
HPI();
printf("%.3f\n",area());
return ;
}

BZOJ - 2618 凸多边形 (半平面交)的更多相关文章

  1. bzoj 2618【半平面交模板】

    #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> usin ...

  2. bzoj 2618: [Cqoi2006]凸多边形 [半平面交]

    2618: [Cqoi2006]凸多边形 半平面交 注意一开始多边形边界不要太大... #include <iostream> #include <cstdio> #inclu ...

  3. 洛谷 P4196 [CQOI2006]凸多边形 (半平面交)

    题目链接:P4196 [CQOI2006]凸多边形 题意 给定 \(n\) 个凸多边形,求它们相交的面积. 思路 半平面交 半平面交的模板题. 代码 #include <bits/stdc++. ...

  4. 【BZOJ 2618】 2618: [Cqoi2006]凸多边形 (半平面交)

    2618: [Cqoi2006]凸多边形 Description 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n=2时,两个凸多边形如下图: 则相交部分的面积为5.233. Input 第一 ...

  5. bzoj 2618 2618: [Cqoi2006]凸多边形(半平面交)

    2618: [Cqoi2006]凸多边形 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 656  Solved: 340[Submit][Status] ...

  6. 2018.07.04 BZOJ 2618 Cqoi2006凸多边形(半平面交)

    2618: [Cqoi2006]凸多边形 Time Limit: 5 Sec Memory Limit: 128 MB Description 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n ...

  7. bzoj 2618 半平面交模板+学习笔记

    题目大意 给你n个凸多边形,求多边形的交的面积 分析 题意\(=\)给你一堆边,让你求半平面交的面积 做法 半平面交模板 1.定义半平面为向量的左侧 2.将所有向量的起点放到一个中心,以中心参照进行逆 ...

  8. 【BZOJ-2618】凸多边形 计算几何 + 半平面交 + 增量法 + 三角剖分

    2618: [Cqoi2006]凸多边形 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 959  Solved: 489[Submit][Status] ...

  9. 【BZOJ2618】[CQOI2006]凸多边形(半平面交)

    [BZOJ2618][CQOI2006]凸多边形(半平面交) 题面 BZOJ 洛谷 题解 这个东西就是要求凸多边形的边所形成的半平面交. 那么就是一个半平面交模板题了. 这里写的是平方的做法. #in ...

随机推荐

  1. oracle扩容

    动态添加表空间: alter tablespace cbs_cos add datafile '/dba/oradata/ORADEVdatafile/cbs_cos02.dbf' size 100m ...

  2. webAPI支持跨域

    问题描述: 添加引用:右键项目→添加nuget包 在:App_Start/WebApiConfig.Register中添加如下一句话 //跨域配置 config.EnableCors(new Enab ...

  3. 【Head First Servlets and JSP】笔记8:监听者

    1.你不用了解所有监听者API,并不多,一共有8个.不过,你需要知道你能监听什么,以便在需要的时候可以查. 2.关于Session和Cookie.参见JavaWeb学习总结(十二)——Session ...

  4. git 使用教程 --基础一

    第一步:下载git   https://git-scm.com/ 第二步: 切到需要保存的文件夹下,执行: bogon:VBV mona$ git init #初始化,表示即将对当前文件夹进行版本控制 ...

  5. MongoDB的Find详解(一)

    1.指定返回的键 db.[documentName].find ({条件},{键指定}) 数据准备persons.json var persons = [{name:"jim",a ...

  6. EXP-00008:遇到ORACLE错误904问题

    案例情景--在一次Oracle 数据库导出时: C:\Documents and Settings\Administrator>exp lsxy/lsxy@lsxy_db file=E:\lsx ...

  7. 使用fastboot刷机流程【转】

    本文转载自:http://www.voidcn.com/blog/Qidi_Huang/article/p-6236224.html [准备工作] 首先需要准备好刷机包,可以是自己编译的,也可以是从别 ...

  8. Docker Compose yml

    Wordpress + Mysql version: '3' services: db: image: mysql:latest volumes: - db_data:/var/lib/mysql e ...

  9. KestrelHttpServer

    source code of Kestrel of documentation https://github.com/aspnet/KestrelHttpServer https://github.c ...

  10. eclipse添加删除插件-eclipse marketplace

    源文地址:http://jingyan.baidu.com/article/cdddd41c5c883353cb00e19e.html 在有些版本的eclips上并没有eclipse marketpl ...