当前位置: 首页 > news >正文

两点与圆(异或神通)

给出 n 个圆,保证任意两个圆都不相交且不相切。

然后给出两个点 (x1​,y1​),(x2​,y2​),保证均不在某个圆上。现在要从 (x1​,y1​)→(x2​,y2​) 画条曲线,问这条曲线最少穿过多少次圆的边界?

输入格式

  • 第一行为一个整数 n,表示圆的个数;
  • 第二行是 n 个整数,表示 n 个圆的 x 坐标;
  • 第三行是 n 个整数,表示 n 个圆的 y 坐标;
  • 第四行是 n 个整数,表示 n 个圆的半径 r;
  • 第五行是四个整数 x1​,y1​,x2​,y2​。

输出格式

仅一个整数,表示最少要穿过多少次圆的边界。

输入输出样例

输入 #1复制

7
1 -3 2 5 -4 12 12
1 -1 2 5 5 1 1
8 1 2 1 1 1 2
-5 1 12 1

输出 #1复制

3

说明/提示

【数据范围】

对于 100% 的数据,1≤n≤50,∣x∣,∣y∣≤1000,1≤r≤1000。

保证圆之间没有公共点。

//核心思路:对于任意一个圆,只要一个在圆内,一个在圆外,则结果加1

#include<cstdio>
#include<cmath>//用到sqrt,即开根
using namespace std;
int x[60],y[60],r[60];//读入的三个数组
double dist(int x1,int y1,int x2,int y2){//求距离的函数
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));//公式
}
int main(){
    int n,x1,y1,x2,y2,ans=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&x[i]);
    for(int i=1;i<=n;i++) scanf("%d",&y[i]);
    for(int i=1;i<=n;i++) scanf("%d",&r[i]);
    scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
    for(int i=1;i<=n;i++)//每个圆都搜一遍
        if((dist(x1,y1,x[i],y[i])<r[i])^(dist(x2,y2,x[i],y[i]))<r[i]) ans++;//如果两个点恰有一个在圆内,就累加上
    printf("%d",ans);//输出总和
    return 0;//华丽结束
}

这里我最想说的就是代码中异或的作用,异或(XOR)是一种逻辑运算符,广泛应用于数学、计算机科学和电子电路设计中。它的基本思想是:当两个输入不同时,结果为真;当两个输入相同时,结果为假。真牛

http://www.dtcms.com/a/109121.html

相关文章:

  • 快速求平方根
  • 【每日一个知识点】分布式数据湖与实时计算
  • Ubuntu上离线安装ELK(Elasticsearch、Logstash、Kibana)
  • Vulkan实例教程1 - Vulkan应用程序结构(附代码)
  • node ---- 解决错误【Error: error:0308010C:digital envelope routines::unsupported】
  • 第一部分 领域驱动设计的原则与实践
  • 10.多线程
  • 【C++】第八节—string类(上)——详解+代码示例
  • P4305 [JLOI2011] 不重复数字
  • 系统与网络安全------Windows系统安全(8)
  • 纯c++实现transformer 训练+推理
  • AI+自动化测试:如何让测试编写效率提升10倍?
  • torch 拆分子张量 分割张量
  • idea运行tomcat项目,很慢的问题
  • 我想尝试做一个钢铁侠反应堆
  • 人工智能与大模型的关系
  • Java学习总结-io流-练习案例
  • 4.3学习总结
  • umi框架开发移动端h5
  • 【MySQL】理解MySQL的双重缓冲机制:Buffer Pool与Redo Log的协同之道
  • C++数据类型(整型、浮点型、字符型、布尔型)
  • 办公设备管理系统(springboot+ssm+jsp+maven)
  • 面向教育领域的实时更新RAG系统:核心模块设计与技术选型实践指南
  • C++:算术运算符
  • 统计子矩阵
  • Parasoft C++Test软件单元测试_操作指南
  • 从内核到应用层:Linux缓冲机制与语言缓冲区的协同解析
  • 【MyBatis】深入解析 MyBatis XML 开发:增删改查操作和方法命名规范、@Param 重命名参数、XML 返回自增主键方法
  • ES中经纬度查询geo_point
  • 图像处理之Homography matrix(单应性矩阵)