科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移

简介: 科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移

荒岛探测


题目描述


科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。

小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移动设备。定位设备需要从发射器发射一个信号到移动设备,移动设备收到后马上转发,最后由接收器接收,根据这些设备之间传递的时间差就能计算出移动设备距离发射器和接收器的两个距离,从而实现定位。


小蓝在两个位置已经安装了发射器和接收器,其中发射器安装在坐标 (xA, yA) ,接收器安装在坐标 (xB, yB)小蓝的发射器和接收器可能在岛上,也可能不在岛上。

小蓝的定位设备设计有些缺陷,当发射器到移动设备的距离加上移动设备到接收器的距离之和大于 L 时,定位设备工作不正常。当和小于等于 L 时,定位设备工作正常。为了安全,小蓝只在定位设备工作正常的区域探测考察。


已知荒岛是一个三角形,三个顶点的坐标分别为 (x1, y1), (x2, y2), (x3, y3)

请计算,小蓝在荒岛上可以探测到的面积有多大?


输入描述


输入的第一行包含五个整数,分别为xA, yA, xB, yB, L

第二行包含六个整数,分别为x1, y1, x2, y2, x3, y3

保证发射器的两个坐标不同,并且

-1000<=xA, yA, xB, yB , L, x1, y1, x2, y2, x3, y3<=1000


输出描述

输出一行,包含一个实数,四舍五入保留 2 位小数,表示答案。

考虑到计算中的误差,只要你的输出与参考输出相差不超过 0.01 即可。


输入输出样例


示例

输入

10 6 4 12 12

0 2 13 2 13 15


输出

39.99

样例说明


20210417132217973.png


运行限制 最大运行时间:1s 最大运行内存: 256M


C++


暴力算法,最后超时了5555


#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int x1, y01, x2, y2, x3, y3, xA, yA, xB, yB, L;
double fxy(int a,int b ,double x)//求直线方程
{
    int X1 = 0, Y1 = 0, X2 = 0, Y2 = 0;
        switch (a)
        {
        case 1:X1 = x1; Y1 = y01; break;
        case 2:X1 = x2; Y1 = y2; break;
        case 3:X1 = x3; Y1 = y3; break;
        default:X1 = xA; Y1 = yA;
        }
        switch (b)
        {
        case 1:X2 = x1; Y2 = y01; break;
        case 2:X2 = x2; Y2 = y2; break;
        case 3:X2 = x3; Y2 = y3; break;
        default:X2 = xB; Y2 = yB;
        }
        return double(Y2 - Y1) / (X2 - X1)*(x - X1) + Y1;
}
bool island(double x,double y)//判断是否在三角形内
{
    return ((fxy(1, 2, x) - y)*(fxy(1, 3, x) - y) <= 0) + ((fxy(1, 2, x) - y)*(fxy(2, 3, x) - y) <= 0) + ((fxy(1, 3, x) - y)*(fxy(2, 3, x) - y) <= 0)>=2;
}
bool ellipse(double x,double y)//判断在椭圆内
{
    return sqrt((x - xA)*(x - xA) + (y - yA)*(y - yA)) + sqrt((x - xB)*(x - xB) + (y - yB)*(y - yB)) <= L;
}
int main()
{
    cin >> xA >> yA >> xB >> yB >> L;
    cin >> x1 >> y01 >> x2 >> y2 >> x3 >> y3;
    double x, y, cx, cy, S = 0;
    cx = (xA + xB) / 2.0;
    cy = (yA + yB) / 2.0;
    for (x = cx - L/2.0; x <= cx + L/2.0; x += 0.02)
        for (y = cy-L/2.0; y<=cy+L/2.0; y += 0.005)
            if (island(x, y)&& ellipse(x, y))
                S += 0.0001;
    printf("%.2f", S + 0.005);
    return 0;
}
相关文章
|
消息中间件 运维 Serverless
商业版vs开源版:一图看懂云消息队列 RocketMQ 版核心优势
自建开源 RocketMQ 集群,为保证业务稳定性,往往需要按照业务请求的峰值去配置集群资源。云消息队列 RocketMQ 版 Serverless 实例通过资源快速伸缩,实现资源使用量与实际业务负载贴近,并按实际使用量计费,有效降低企业的运维压力和使用成本。
725 111
|
6月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法详解
本指南详细介绍在Linux系统中安装和管理Node.js的步骤。首先检查现有环境,包括查看当前版本和清除旧版本;接着通过NodeSource仓库安装最新版Node.js并验证安装结果。推荐使用nvm(Node Version Manager)进行多版本管理,便于切换和设置默认版本。同时,提供常见问题解决方法,如权限错误处理和全局模块迁移方案,以及版本回滚操作,确保用户能够灵活应对不同需求。
510 0
|
7月前
|
安全 Linux 数据安全/隐私保护
安装RHEL9.x操作系统
本教程详细介绍了在Windows系统上使用VMware Workstation 17.5 Pro安装RHEL 9.x的完整流程。首先准备所需设备和软件,包括Windows计算机、RHEL 9 ISO映像文件、VMware软件及相关下载链接。接着,通过创建虚拟机、配置硬件参数完成VMware的基本设置。随后进入RHEL 9.x安装环节,涵盖语言选择、软件配置、网络和主机名设置、时区调整、磁盘分区规划(如/boot、/、swap、/boot/efi等分区)以及用户和密码的创建。最后,启动安装程序并监控进度,直至系统重启进入图形化登录界面。整个过程配有详细步骤说明和截图,便于用户操作和理解。
安装RHEL9.x操作系统
|
安全 API 数据安全/隐私保护
小红书接口数据查询优化指南
小红书作为热门的社交媒体平台,提供了丰富的API接口供开发者使用。本文档详细介绍如何通过API高效查询小红书数据,包括注册登录、创建应用、接口调用及数据解析等步骤,并附有Python示例代码,助您轻松上手。同时,强调了合规使用、隐私保护和请求频率控制的重要性,确保数据查询的安全与高效。
|
机器学习/深度学习 人工智能 TensorFlow
探索AI在图像识别中的应用
【8月更文挑战第31天】本文将深入探讨人工智能在图像识别领域的应用,包括其原理、技术实现以及实际应用案例。我们将通过Python代码示例,展示如何使用深度学习库TensorFlow进行图像分类任务。无论你是AI初学者还是有一定基础的开发者,都能从中获得启发和学习。
|
弹性计算 运维 自然语言处理
阿里云OS Copilot测评:重塑Linux运维与开发体验的智能革命
阿里云OS Copilot巧妙地将大语言模型的自然语言处理能力与操作系统团队的深厚经验相结合,支持自然语言问答、辅助命令执行等功能,为Linux用户带来了前所未有的智能运维与开发体验。
|
数据采集 JavaScript 前端开发
网页抓取进阶:如何提取复杂网页信息
在信息爆炸时代,从复杂网页中高效抓取数据对开发者和分析师至关重要。本文探讨如何利用 `webpage` 对象结合代理IP技术,轻松抓取如大众点评这类动态加载且具备反爬机制的网站数据。通过 Python 的 `requests`、`BeautifulSoup` 和 `Selenium`,结合代理IP,详细讲解了如何应对动态内容加载、反爬机制等问题,并提供了具体代码实现。通过这种方法,可以批量抓取商家信息,为数据分析提供支持。
1176 1
网页抓取进阶:如何提取复杂网页信息
|
存储 安全 数据安全/隐私保护
|
Java Spring
Spring Boot集成JavaMailSender发送电子邮件
Spring Boot集成JavaMailSender发送电子邮件
471 0
Spring Boot集成JavaMailSender发送电子邮件

热门文章

最新文章