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

蓝桥杯:信号覆盖

本题的考点是模拟,我们通过枚举每个点与信号塔之间的距离,与半径进行比较,如果半径大于距离,那么该点可以被覆盖,计数器加一,由二维空间,两点之间的距离公式计算每个点与信号塔之间的距离double d = sqrt(pow(xh[i].x1 - j, 2) + pow(xh[i].y1 - k, 2));注意这里d的类型为double,因为如果定义为int,sqrt是向下取整,d变小,会统计多余的点,导致计数器不正确,枚举完所有的距离之后,输出cnt即可

#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
const int N = 1e2+10;
#define int long long 
int w,h,n,r;
bool vis[N][N];
bool vis1[N][N];
struct xinhao{
	int x1;
	int y1;
}xh[N];

int whd[N][N];
signed main() {

	cin>>w>>h>>n>>r;
	for(int i = 1;i<=n;i++){
		int x,y;cin>>x>>y;
		if(!vis1[x][y]){
			xh[i].x1 = x;
			xh[i].y1 = y;
			vis1[x][y]=1;
		}
	
	}

	int cnt = 0;
	
//	double d = sqrt(pow(xh[i].x1 - j, 2) + pow(xh[i].y1 - k, 2));
	for(int i = 1;i <= n;i++){
		for(int j = 0;j<=w;j++){
			for(int k = 0;k<=h;k++){
				double d = sqrt(pow(xh[i].x1 - j, 2) + pow(xh[i].y1 - k, 2));
				if(!vis[j][k]&&d<=r){
					cnt++;
					vis[j][k]=1;
				}
			}
		}
	}

	
	cout<<cnt;

	return 0;

}

相关文章:

  • 常见的死锁情况分析
  • 前端小食堂 | Day16 - 前端监控の天眼通
  • 【leetcode100】全排列Ⅱ
  • 不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析
  • VSCode通过SSH远程登录Windows服务器
  • 《SQL编程思想》中的 MySQL 建表语句和测试数据
  • C++友元
  • 如何让ai问答机器人通人性?
  • 在离线情况下如何使用 Python 翻译文本
  • Windows-PyQt5安装+PyCharm配置QtDesigner + QtUIC
  • lanqiaoOJ 1180:斐波那契数列 ← 矩阵快速幂
  • 【接口封装】——22、读写文件
  • Vuex 核心功能与组件通信
  • ThreadLocal(线程本地存储)
  • C++进阶——map和set的使用
  • SpringBoot项目部署到宝塔面板的详细过程
  • 关于解决新版本spring项目请求测试接口返回406的问题
  • 当AI学会“察言观色“:多模态情绪识别的魔幻现实主义之旅
  • BGP路由属性和选路
  • 左叶子之和 找左下角的值 路径总和
  • 年轻人能为“老有意思”做点什么
  • 特朗普称将禁止伊朗石油买家与美国做生意
  • 中国固体火箭发动机领域杰出专家赵殿礼逝世,享年92岁
  • 山东省委组织部办公室主任吴宪利已任德州市委常委、组织部部长
  • 2025五一档新片电影总票房破亿
  • 全文丨中华人民共和国传染病防治法