题目部分

题目描述

给出N个圆,保证任意两个圆都相离,然后给出两个点(x1,y1)、(x2,y2),保证均不在某个圆上,要从点(x1,y1)到(x2,y2)画条曲线,问这条曲线最少穿过多少次圆的边界?

输入输出格式

输入格式:

第一行为一个整数N,表示圆的个数;

第二行是N个整数,表示N个圆的X坐标;

第三行是N个整数,表示N个圆的Y坐标;

第四行是N个整数,表示N个圆的半径R;

第五行是四个整数x1,y1,x2,y2.

【数据规模】

1≤N≤50,坐标范围[-1000,1000],每个圆的半径1<=R<=1000。

保证没有两个圆有公共点,起点和终点不会落到某个圆的边界上。

输出格式:

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

输入输出样例

输入样例#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

分析

所以,这题真的是。。。太厉害了

分析No.1(Wrong)

一开始以为只有四种情况:如图

1

2

3

4

所以

所以,只有三种答案:0,1,2

然而我发现:

对了:就是,有3?!!!!

mmpmmpmmpmmp

既然这样,我就生气了,所以

分析No.2

画图

我把样例画了一下,然后发现。。。

发现

他所谓的相离, 包含内含!!!!

那就明了了,我说怎么会有3。。。

代码

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int x[60],y[60];
double r[60];
int x1,yy,x2,y2;//这里不知道为什么用有y1会报错。。。可能是我没学到那种东西。。。
bool f1,f2;
int ans;
int main()
{
int n;
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("%lf",&r[i]);
scanf("%d%d%d%d",&x1,&yy,&x2,&y2);
for(int i=1;i<=n;i++)
{
double tmp1=sqrt(((x1-x[i])*(x1-x[i]))+((yy-y[i])*(yy-y[i])));
double tmp2=sqrt(((x2-x[i])*(x2-x[i]))+((y2-y[i])*(y2-y[i])));
if(tmp1<r[i]!=tmp2<r[i]) ans++;//如果那两个给定的点都在同一圆内,就不用再加一次相交了
}
cout<<ans<<endl;
return 0;
}

好了我记住了,分析样例,分析样例,分析样例!!!!!

luogu p1652 圆的更多相关文章

  1. 洛谷 P1652圆 题解

    题目传送门 这道题也就是考你对几何的了解: 圆与圆没有公共点且一个圆在另一个圆外面时,叫做圆与圆相离. 当圆心距大于两圆半径之和时,称为两圆外离: 当圆心距小于两圆半径之差的绝对值时,称为两圆内含. ...

  2. luoguP1742 最小圆覆盖

    最小圆覆盖 首先 没错,我是个蒟蒻.luogu 流程 圆 C; for(i=1 to n) { if(P[i] 不在 C 内) { C = {P[i], 0}; for(j=1 to i-1) { i ...

  3. Luogu P4606 [SDOI2018] 战略游戏 圆方树 虚树

    https://www.luogu.org/problemnew/show/P4606 把原来的图的点双联通分量缩点(每个双联通分量建一个点,每个割点再建一个点)(用符合逻辑的方式)建一棵树(我最开始 ...

  4. Luogu P4082 [USACO17DEC]Push a Box 点双连通分量/圆方树

    (貌似有圆方树的做法,我写的是点双) 显然这道题就是直接搜索.定义状态为f[i][j][0~4]表示箱子在(i,j),人在某个方向推.然后问题就是怎么转向.我们发现如果要转向,必须是人走过一条不包括( ...

  5. 「Luogu P2508」[HAOI2008]圆上的整点 解题报告

    题面 给定圆的半径,求圆上整点数 这是一道很Nice的数学题!超爱!好吧,由于这道题,我去Study了一下复数(complex number)复杂的数 真棒!!! 有兴趣的戳这里!!!\(\huge ...

  6. luogu P3180 [HAOI2016]地图 仙人掌 线段树合并 圆方树

    LINK:地图 考虑如果是一棵树怎么做 权值可以离散 那么可以直接利用dsu on tree+树状数组解决. 当然 也可以使用莫队 不过前缀和比较难以维护 外面套个树状数组又带了个log 套分块然后就 ...

  7. luogu P2508 [HAOI2008]圆上的整点

    传送门 推荐去bzoj看个视频了解一下 不要妄想视频直接告诉你题解 但是视频告诉了你后面要用的东西 首先我们要求的是\(x^2+y^2=n^2(x,y\in Z)\)的\((x,y)\)对数,可以转化 ...

  8. 「 Luogu P3137 」X 「 USACO16FEB 」 圆形谷仓

    # 题目大意 管理大大给修下 $\text{Markdown}$ 吧,严重影响做题体验啊. 这道题的意思很简单就是给你一个长度是 $n$ 的环,这个环上不均匀的分布着 $n$ 头奶牛.一头奶牛移动要花 ...

  9. 图论杂项细节梳理&模板(虚树,圆方树,仙人掌,欧拉路径,还有。。。)

    orzYCB 虚树 %自为风月马前卒巨佬% 用于优化一类树形DP问题. 当状态转移只和树中的某些关键点有关的时候,我们把这些点和它们两两之间的LCA弄出来,以点的祖孙关系连成一棵新的树,这就是虚树. ...

随机推荐

  1. 显示Linux进程打开了哪些文件? 用lsof命令

    1.lsof abc.txt --> 显示开启文件 abc.txt的进程. 2.lsof -c abc  ---> 显示abc进程现在打开的文件. 3.lsof -c -p 1234 -- ...

  2. QoS技术总结

    1.QoS主要功能是作为保证服务质量而存在,服务质量最明显的体现根据不同的优先级作出不同的转发行为.高优先级的报文不丢弃,低优先级的报文不能保证带宽. 2.当即将发生拥塞时,QoS的作用就体现出来了. ...

  3. Kotlin 或将取代 Java——《Java 编程思想》作者 Bruce Eckel [转]

    Bruce Eckel 是<Java 编程思想>.<C++编程思想>的作者,同时也是 MindView 公司的总裁,该公司向客户提供软件咨询和培训.他是 C++ 标准委员会拥有 ...

  4. margin塌陷与BFC总结

    只给出关键点,具体效果不做太多示范,真正的东西只有自己试了才能记住 BFC BFC触发: 1.position:absolute/fixed 2.float:left/right 3.display: ...

  5. mssql sqlserver 下文分享一种新颖的字符串截取方法

    原文地址:http://www.maomao365.com/?p=7307 摘要:    以前分割字符串时,都使用类似split函数的方式处理,下文分享一种对有规律的字符串的分隔方式,    即:1. ...

  6. java 根据实体对象生成 增删改的SQL语句 ModelToSQL

    package com.xxx.utils; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import jav ...

  7. Android长时间定时任务实现

    在服务的onStartCommand方法里面使用AlarmManager 定时唤醒发送广播,在广播里面启动服务 每次执行startService方法启动服务都会执行onStartCommand 1.服 ...

  8. python编写文件统计脚本

    python编写文件统计脚本 思路:用os模块中的一些函数(os.listdir().os.path.isdir().os.path.join().os.path.abspath()等) 实现功能:显 ...

  9. docker:版本变更

    在2017年之前的版本号: v1.4,  v1.5,  v1.6,  v1.7, v1.8, v1.9, v1.10, v1.11, v1.12, v1.13 从2017年开始版本后变更为:${yy} ...

  10. MySQL注入与防御

    1.简介 1.1.含义 在一个应用中,数据的安全无疑是最重要的.数据的最终归宿都是数据库,因此如何保证数据库不被恶意攻击者入侵是一项重要且严肃的问题! SQL注入作为一种很流行的攻击手段,一直以来都受 ...