题目描述
以雷达心为圆心的半圆形雷达覆盖范围有多个点 雷达可旋转,求最多覆盖数(含在边界的)
Input
有若干组数据,第一行有两个正整数,一个半径,表示雷达的位置和半径
第二行是n,表示有多少个点
接下来n行每行两个坐标表示点的位置
当半径为负数时输入结束
Ouput
对每个数据给出雷达最多能覆盖的点数
分析
叉积的公式练习题啊!
首先读入时将不能覆盖(线段距离超出半径的)去除就好了
然后就n^2每举每个点相对于雷达位置的叉积,如果小于0就在逆时针方向,个数++
大于0就在顺时针方向,个数++
如果等于0两边的个数都++
然后求出最大值就好了!
#include <iostream>
#include <cstdio>
#include <cmath>
#include <memory.h>
using namespace std;
int n;
double r;

该博客探讨了如何解决计算几何中的雷达覆盖问题。通过输入数据包括雷达半径和多个点的位置,确定雷达旋转后能覆盖的最多点数。博主提出通过叉积公式排除超出覆盖范围的点,并进行两两比较,计算逆时针和顺时针方向的点数,从而找到最大覆盖数。
最低0.47元/天 解锁文章
556

被折叠的 条评论
为什么被折叠?



