zoukankan      html  css  js  c++  java
  • Luogu P1652 圆


    Luogu P1652 圆

    解析

    • 认真读题,注意任意两个圆都相离,而且是画曲线,也就是说只有点在圆内才会需要穿过圆的边界,否则绕过去就可以了
    • 注意一种情况,起点和终点都在同一个圆内,那么这个圆可以不需穿过边界
    • 判断一个点是否在圆内看它到圆心的距离是否小于半径

    Code

    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define LL long long
    using namespace std;
    struct circle
    {
    	int x,y,r;
    }c[55];
    int n,ax,ay,bx,by,num;
    bool book[55];
    double cal(int v,int xx,int yy)
    {
        return (double)sqrt((c[v].x-xx)*(c[v].x-xx)+(c[v].y-yy)*(c[v].y-yy));
    }
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++) scanf("%d",&c[i].x);
    	for(int i=1;i<=n;i++) scanf("%d",&c[i].y);
    	for(int i=1;i<=n;i++) scanf("%d",&c[i].r);
    	scanf("%d%d%d%d",&ax,&ay,&bx,&by);
    	for(int i=1;i<=n;i++)
    	{
    		double da=cal(i,ax,ay),db=cal(i,bx,by);
    		if(da<c[i].r&&db<c[i].r) continue;
    		if(da<c[i].r||db<c[i].r) num++;
    	}
    	printf("%d
    ",num);
    	return 0;
    }
    
  • 相关阅读:
    算法作业实验三
    牛客练习赛53 B 美味果冻
    牛客练习赛53 C 富豪凯匹配串
    bitmat
    牛客挑战赛33 B 鸽天的放鸽序列
    树状数组
    线段树
    2019牛客国庆集训派对day7 A 2016
    背包
    作业三 -并查集
  • 原文地址:https://www.cnblogs.com/Hawking-llfz/p/11550649.html
Copyright © 2011-2022 走看看