[NOI2009] 描边

题目描述

小 Z 是一位杰出的数学家。聪明的他特别喜欢研究一些数学小问题。

有一天,他在一张纸上选择了 n 个点,并用铅笔将它们两两连接起来,构成 (�−1)22n(n−1)​ 条线段。由于铅笔很细,可以认为这些线段的宽度为 。

望着这些线段,小 Z 陷入了冥想中。他认为这些线段中的一部分比较重要,需要进行强调。因此小 Z 拿出了毛笔,将它们重新进行了描边。毛笔画在纸上,会形成一个半径为 �r 的圆。在对一条线段进行描边时,毛笔的中心(即圆心)将从线段的一个端点开始,沿着该线段描向另一个端点。下图即为在一张 44 个点的图中,对其中一条线段进行描边强调后的情况。

现在,小 Z 非常想知道在描边之后纸面上共有多大面积的区域被强调,你能帮助他解答这个问题么?

输入格式

本题是一道提交答案型试题,所有的输入文件 path1.in ∼∼ path10.in 已在相应目录下。

输入文件请点击 这里 下载。

输入文件的第一行为一个正整数 �n,表示选择的点的数目。

第二行至第 �+1n+1 行,其中:第 �+1i+1 行中为两个实数 ��,��xi​,yi​,表示点 �i 的坐标为 (��,��)(xi​,yi​)。

第 �+2n+2 行为一个正整数 �m,表示小 Z 认为比较重要的线段的条数。

第 �+3n+3 行至第 �+�+2n+m+2 行,每行有两个正整数 �,�a,b,表示一条线段。其中 �,�a,b 两个数分别表示该线段的两个端点的编号。

第 �+�+3n+m+3 行中为一个实数 �r,表示毛笔在纸上形成的圆的半径。

第 �+�+4n+m+4 行中为四个实数 �1,�2,�3,�4p1​,p2​,p3​,p4​,即评分使用的参数。

输出格式

输出文件 path*.out 仅一行一个数,即为描边后被强调区域的总面积。

输入输出样例

输入 #1复制

2
1 1
1 2
1
1 2
1
0.00001 0.001 0.1 1

输出 #1复制

5.1415927

说明/提示

每个测试点单独评分。

本题设有 44 个评分参数 �1,�2,�3,�4p1​,p2​,p3​,p4​(�1<�2<�3<�4p1​<p2​<p3​<p4​),已在输入文件中给出。

你的得分将按照如下规则给出:

  • 若你的答案与标准答案相差不超过 �1p1​,则该测试点你将得到满分;
  • 否则,若你的答案与标准答案相差不超过 �2p2​,则你将得到该测试点 70%70% 的分数;
  • 否则,若你的答案与标准答案相差不超过 �3p3​,则你将得到该测试点 40%40% 的分数;
  • 否则,若你的答案与标准答案相差不超过 �4p4​,则你将得到该测试点 10%10% 的分数;
  • 否则,该测试点你的得分为 00。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=2505;
const ld eps=1e-9;
int n,m,u[N],v[N],cnt;
ld r,mxx=-1e9,mix=1e9,mxy=-1e9,miy=1e9;
ld ans;
struct aa
{ld x,y;aa operator +(const aa &b)const{return aa{x+b.x,y+b.y};}aa operator -(const aa &b)const{return aa{x-b.x,y-b.y};}aa operator *(const ld &b)const{return aa{x*b,y*b};}ld operator ^(const aa &b)const{return x*b.y-y*b.x;}ld operator *(const aa &b)const{return x*b.x+y*b.y;}ld dis() {return sqrt(x*x+y*y);}
}dt[N];
int sgn(ld x) {return (x>eps)-(x<-eps);}
struct bb
{ld ps;int fl;bool operator <(const bb &b)const{return sgn(ps-b.ps)? ps<b.ps:fl>b.fl;}
}Ln[N+N];
bool in(aa s,aa t,aa x)
{ld lp=((x-s)^(t-s));if(sgn(lp)>0) swap(s,t);else lp=-lp;aa la=t-s,lb=la;swap(lb.x,lb.y),lb.x=-lb.x;if(sgn((x-s)^lb)>=0&&sgn((x-t)^lb)<=0) return lp/la.dis()<=r;return min((x-s).dis(),(x-t).dis())<=r;
}
int main()
{freopen("path10.in","r",stdin);freopen("path10.out","w",stdout); int i,j;for(cin>>n,i=1;i<=n;i++)cin>>dt[i].x>>dt[i].y,mxx=max(mxx,dt[i].x),mix=min(mix,dt[i].x),mxy=max(mxy,dt[i].y),miy=min(miy,dt[i].y);for(cin>>m,i=1;i<=m;i++) cin>>u[i]>>v[i];cin>>r,mix-=r,mxx+=r,miy-=r,mxy+=r;ld px=(mxx-mix)/10000000.0;int Cl=0;for(ld X1=mix+px/2,X;X1<mxx;X1+=px){cnt=0,X=X1;for(i=1;i<=m;i++)if(max(dt[u[i]].x,dt[v[i]].x)+r>X&&min(dt[u[i]].x,dt[v[i]].x)-r<X){if(fabs(dt[u[i]].x-X)>fabs(dt[v[i]].x-X)) swap(u[i],v[i]);if(fabs(dt[u[i]].x-X)<r){ld st=dt[u[i]].y,pl=0,pr=mxy-st,mid;while(pr-pl>eps){mid=(pl+pr)/2;if(in(dt[u[i]],dt[v[i]],aa{X,st+mid})) pl=mid;else pr=mid;}Ln[++cnt]=bb{st+(pl+pr)/2,-1},pl=0,pr=st-miy;while(pr-pl>eps){mid=(pl+pr)/2;if(in(dt[u[i]],dt[v[i]],aa{X,st-mid})) pl=mid;else pr=mid;}Ln[++cnt]=bb{st-(pl+pr)/2,1};}else{if(dt[u[i]].x>dt[v[i]].x) swap(u[i],v[i]);aa lp=dt[v[i]]-dt[u[i]];ld la=dt[u[i]].y+lp.y*(X-dt[u[i]].x)/(dt[v[i]].x-dt[u[i]].x),lb=r*lp.dis()/(dt[v[i]].x-dt[u[i]].x);Ln[++cnt]=bb{la-lb,1},Ln[++cnt]=bb{la+lb,-1};}}sort(Ln+1,Ln+cnt+1);for(i=1,j=0;i<=cnt;i++)ans+=(!!j)*(Ln[i].ps-Ln[i-1].ps)*px,j+=Ln[i].fl;}printf("%.9Lf",ans);return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353925.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【英文文本分类实战】之二——数据集挑选与划分

请参考本系列目录&#xff1a;【英文文本分类实战】之一——实战项目总览 下载本实战项目资源&#xff1a;神经网络实现英文文本分类.zip&#xff08;pytorch&#xff09; [1] 数据集平台 在阅读了大量的论文之后&#xff0c;由于每一篇论文都会提出一个模型&#xff0c;十分想…

使用Keras进行单模型多标签分类

原文&#xff1a;https://www.pyimagesearch.com/2018/05/07/multi-label-classification-with-keras/ 作者&#xff1a;Adrian Rosebrock 时间&#xff1a;2018年5月7日 源码&#xff1a;https://pan.baidu.com/s/1x7waggprAHQDjalkA-ctvg &#xff08;wa61&#xff09; 译者&…

图像分类实战:mobilenetv2从训练到TensorRT部署(pytorch)

文章目录 摘要mobilenetv2简介线性瓶颈倒残差 ONNXTensorRT项目结构训练数据增强Cutout和Mixup导入包设置全局参数图像预处理与增强读取数据设置模型定义训练和验证函数 测试模型转化及推理转onnxonnx推理转TensorRTTensorRT推理 摘要 本例提取了植物幼苗数据集中的部分数据做…

商品分类js html,json数据来制作商城的产品分类菜单

人们早就习惯了在互联网购物买东西,甚至有一部分朋友还是上瘾了。本篇PHP教程就来帮助您的电子商务项目实现最重要的产品类别的导航菜单系统。我已经使用PHP、MYSQL及JQuery实现了亚马逊样式的产品分类图像菜单,下面让我们来看一下如何使用json数据来制作商城的产品分类菜单。…

Amazon SPAPI PII权限申请问题汇总

亚马逊PII权限申请 官方文档地址&#xff1a;Selling Partner API 目录 亚马逊PII权限申请 Amazon PII开发者角色申请问题罗列&#xff1a; 接下来很多人都可能会遇到的拒绝原因&#xff1a; eg.1 eg.2 eg.3 eg.4 审计及远程 最后&#xff0c;坐等申请通过的case Amazon PII开发…

文本分类方案,飞浆PaddleNLP涵盖了所有

文章目录 1.前言2.核心技术2.1 文本分类方案全覆盖2.1.1 分类场景齐全2.1.2 多方案满足定制需求方案一&#xff1a;预训练模型微调方案二&#xff1a;提示学习方案三&#xff1a;语义索引 2.2 更懂中文的训练基座2.3 高效模型调优方案2.4 产业级全流程方案 3. 快速开始4. 常用中…

亚马逊中国站通过ASIN获取商品信息

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

亚马逊国际站获取商品列表

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

亚马逊国际站处理图形验证码

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

dvwa靶场通关(五)

第五关 File Upload&#xff08;文件上传漏洞&#xff09; File Upload&#xff0c;即文件上传漏洞&#xff0c;通常是由于对上传文件的类型、内容没有进行严格的过滤、检查&#xff0c;使得攻击者可以通过上传木马获取服务器的webshell权限 low low等级没有任何的防护 创建…

亚马逊国际站通过ASIN获取商品信息

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

亚马逊国际站获取全部商品分类

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

亚马逊中国站获取全部商品分类

目录 亚马逊中国站获取全部商品分类 亚马逊中国站获取商品列表 亚马逊中国站通过ASIN获取商品信息 亚马逊中国站获取商品库存信息 亚马逊国际站获取全部商品分类 亚马逊国际站获取商品列表 亚马逊国际站处理图形验证码 亚马逊国际站通过ASIN获取商品信息 亚马逊国际站获取商品…

推荐12个开放式免费收录网站的分类目录

很多做网站推广的网友都问2019网址分类目录还有用吗?一些长久网站或高权重、流量高的网站分类目录还有用的&#xff0c;不但能增加优质的外链&#xff0c;提高网站的权重&#xff0c;还能增加网站的曝光率。做seo网页优化的&#xff0c;很多都将会新站提交到各个分类目录网站&…

亚马逊分类目录_新版亚马逊分类目录v2.4程序源码官方分享下载

亚马逊分类目录程序是个跨平台的开源软件&#xff0c;具备来路、去路统计功能&#xff0c;支持两级分类&#xff0c;具有操作简单、功能强大、稳定性好、扩展性及安全性强、二次开发及后期维护方便&#xff0c;可以帮您迅速、轻松地构建起一个强大、专业的分类目录或网址导航网…

《大数据技术与应用》课程实验报告|week12|实验8|Pig——高级编程环境|验证评估函数

目录 一、实验内容 二、实验目的 三、实验设备 四、实验步骤 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 步骤七 步骤八 步骤九 步骤十 步骤十一 步骤十二 步骤十三 步骤十四 步骤十五 步骤十六 五、实验结果 六、实验小结 一、实验内容 验证19.5节中的…

微信Mac版客户端(支持发布朋友圈)v3.1.5(18841)正式版

微信Mac版客户端全新功能升级&#xff01;&#xff01;不仅支持查看朋友圈&#xff0c;还能发布朋友圈啦&#xff01;&#xff01;&#xff01;微信正式版支持对朋友圈进行互动和点 赞等操作&#xff0c;还可以浏览朋友圈相册&#xff0c;这是一款运行在OS X上的 社交聊天工具&…

怒肝半月!Python 学习路线+资源大汇总

Python 学习路线 by 鱼皮。 原创不易&#xff0c;请勿抄袭&#xff0c;违者必究&#xff01; 大家好&#xff0c;我是鱼皮&#xff0c;肝了十天左右的 Python 学习路线终于来了~ 和之前一样&#xff0c;在看路线前&#xff0c;建议大家先通过以下视频了解几个问题&#xff1a;…

计算机考研,这样选学校才是正解

写了一篇《启舰&#xff1a;对计算机专业来说学历真的重要吗&#xff1f;》&#xff0c;一时间N多同学咨询自身情况要不要考研&#xff0c;眼看有点Hold不住&#xff0c;索性又出了一篇《启舰&#xff1a;计算机专业有必要考研吗&#xff1f;》&#xff0c;结果&#xff0c;又有…

【035期】面试官问:什么是耦合?解耦合的方法有哪几种?

>>号外&#xff1a;关注“Java精选”公众号&#xff0c;回复“面试资料”&#xff0c;免费领取资料&#xff01;“Java精选面试题”小程序&#xff0c;3000 道面试题在线刷&#xff0c;最新、最全 Java 面试题&#xff01; 在项目的开发过程中&#xff0c;我们经常强调项…