【ccf-csp题解】第1次csp认证-第四题-无线网络-题解

news2024/11/25 10:27:46

题目描述

思路讲解

可以把题目抽象为:
从第1个点到第2个点,经过特殊点的数量不超过k的单源最短路径(其中每条边的权重均为1)

可以使用bfs解决这个问题,但是dist[][]数组和队列中放置的pair<int,int>元素不再是单单的x和y,而是点的标号b和状态d

所谓点的标号,可以事先创建一个PII point[N],这样一个下标就代表一个点

状态的意思是:从1到点b总共经过了几个特殊点?

举个栗子:

dist[5][3]:从1到5经过了3个特殊点的最短路径

由于r的限制,不是每一个都可以到达另一个点,那么这里就涉及一个技巧,即提前判断可以互相到达的点,然后把它们相连,最后就构造出一个互通且边权重为1的图

for(int i=1;i<=n+m;i++)
	for(int j=1;j<=n+m;j++)
		if(check(i,j,r))//判断点i和点j距离是否小于等于r 
		add(i,j),add(j,i);

满分代码

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int N=210,M=N*N;
int h[N],e[M],ne[M],idx;
typedef long long LL;
typedef pair<int,int>PII;
PII p[N];
int dist[N][N];
int n,m,k,r;
bool check(int i,int j,int r)
{
	int dx=p[i].first-p[j].first;
	int dy=p[i].second-p[j].second;
	return (LL)dx*dx+(LL)dy*dy<=(LL)r*r;
}
void add(int a,int b)
{
	e[idx]=b;ne[idx]=h[a];h[a]=idx++;
}
int bfs()
{
	memset(dist,0x3f,sizeof dist);
	queue<PII>q;
	q.push({1,0});
	dist[1][0]=0;
	while(q.size())
	{
		auto t=q.front();
		q.pop();
		for(int i=h[t.first];i!=-1;i=ne[i])
		{
			int a=e[i],b=t.second;
			if(a>n)b++;
			if(b<=k)
			{
				if(dist[a][b]>dist[t.first][t.second]+1)
				{
					dist[a][b]=dist[t.first][t.second]+1;
					q.push({a,b});
				}
			}
		}
	}
	int res=1e8;
	for(int i=0;i<=k;i++)
	res=min(res,dist[2][i]);
	return res-1;
}
int main()
{
	cin>>n>>m>>k>>r;
	memset(h,-1,sizeof h);
	for(int i=1;i<=n;i++)cin>>p[i].first>>p[i].second;
	for(int i=n+1;i<=n+m;i++)cin>>p[i].first>>p[i].second;
	for(int i=1;i<=n+m;i++)
		for(int j=1;j<=n+m;j++)
			if(check(i,j,r))//判断点i和点j距离是否小于等于r 
			add(i,j),add(j,i);
	cout<<bfs()<<endl;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/979003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【大魔王送书第二期】搞懂大模型的智能基因,RLHF系统设计关键问答

RLHF&#xff08;Reinforcement Learning with Human Feedback&#xff0c;人类反馈强化学习&#xff09;虽是热门概念&#xff0c;并非包治百病的万用仙丹。本问答探讨RLHF的适用范围、优缺点和可能遇到的问题&#xff0c;供RLHF系统设计者参考。 目录 RLHF是什么&#xff1f;…

京东API 接入说明(1688商品详情,关键字搜索商品等)

API地址:https://o0b.cn/anzexi 调用示例&#xff1a;https://api-gw.onebound.cn/jd/item_get/?keytest_api_key& &num_iid10335871600&&langzh-CN&secret 参数说明 通用参数说明 url说明 https://api-gw.onebound.cn/平台/API类型/ 平台&#xff1a;淘…

java修改版本不生效的解决办法

1、jdk安装使用了.exe文件直接运行安装&#xff0c;这个不用配置环境变量&#xff0c;惠子动生成运行的文件&#xff0c; 2、现象&#xff0c; 修改环境变量不生效 3、解决办法 dos命令页——>输入where java 将查到的文件按照路径删掉&#xff08;不要删除安装的文件&#…

docker笔记9:Docker-compose容器编排

目录 1.是什么&#xff1f; 2. 能干嘛&#xff1f; 3.去哪下&#xff1f; 4.安装步骤 ​编辑 5.卸载步骤 6.Compose核心概念 6.1概念 6.2 Compose常用命令 7.Compose编排微服务 7.1改造升级微服务工程docker_boot 7.2不用Compose 7.2.1 单独的mysql容器实例 7.3 …

[LeetCode周赛复盘] 第 112场双周赛20230903

[LeetCode周赛复盘] 第 112场双周赛20230903 一、本周周赛总结2839. 判断通过操作能否让字符串相等 I1. 题目描述2. 思路分析3. 代码实现 2840. 判断通过操作能否让字符串相等 II1. 题目描述2. 思路分析3. 代码实现 2841. 几乎唯一子数组的最大和1. 题目描述2. 思路分析3. 代码…

阻止 NTLM后无法登录远程桌面的原因

阻止 NTLM(NT LAN Manager) 攻击设置二 之前郑州景安的服务器被攻击&#xff0c;没过几天阿里云的也被攻击&#xff0c;且都是 NTLM 攻击。 Operating System: Windows Server 2008(R2) Enterprise Service Pack 1 64bit 一、winr 输入 gpedit.msc 二、依次进入&#xff1a;…

leetcode:268. 丢失的数字(python3解法)

难度&#xff1a;简单 给定一个包含 [0, n] 中 n 个数的数组 nums &#xff0c;找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1&#xff1a; 输入&#xff1a;nums [3,0,1] 输出&#xff1a;2 解释&#xff1a;n 3&#xff0c;因为有 3 个数字&#xff0c;所以所有…

高效复用:RecyclerView内部嵌套横向列表时的优化技巧

背景 假设要实现下面的效果图&#xff1a; 如图所示&#xff0c;首先这是一个多样式的滑动列表&#xff08;截图里只列举了其中的3 种样式&#xff09;&#xff0c;整体外部使用 RecyclerView 来实现没什么疑问。那么截图第3个ItemView 中箭头指向的横向标签列表如何实现呢&am…

网络编程套接字 | 预备知识

在之后的文章中我们将来讲解网络编程中的相关知识点&#xff0c;再本文中我们首先来讲解一下网络编程中的预备知识&#xff1a; 预备知识 源IP地址和目的IP地址 在IP数据包中有两个IP地址分别是源IP地址和目的IP地址&#xff0c;此时这里就会出现一个问题就是&#xff1a;如…

Spring MVC 之MVC 体系结构、什么是SpringMVC

Spring MVC简介 MVC 体系结构三层架构MVC设计模式 Spring MVC 是什么&#xff1f;扩展知识Spring模块Data Access/Integration&#xff08;数据访问/集成&#xff09;Web&#xff08;网络层&#xff09;AOP&#xff08;面向切面&#xff09;Messaging&#xff08;消息传送&…

Invalid bound statement (not found): com.test.mapper.ItemsMapper.selectItems

分析原因 如下图&#xff0c;因为idea默认只会扫描resources目录下xml的文件&#xff0c;所有java目录下ItemsMapper.xml没有被扫描到&#xff0c;导致Invalid bound statement (not found): com.test.mapper.ItemsMapper.selectItems 解决办法 在pom文件中&#xff0c;增加…

【LeetCode-中等题】47. 全排列 II

文章目录 题目方法一&#xff1a;递归回溯去重 题目 相比较46题&#xff1a;不需要去重&#xff1a;【LeetCode-中等题】46. 全排列 需要做出的改变就是&#xff1a; 首先需要对待全排列的数组进行排序&#xff08;为去重操作做准备&#xff09; Arrays.sort(nums);//对数组…

Nacos Java SDK

概述部分 Maven 坐标 <dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>${version}</version> </dependency>注意&#xff1a;由于Nacos Java SDK在2.0版本后引入了gRPC&am…

直播邀约|8个数字了解2023腾讯全球数字生态大会

2023腾讯数字生态大会&#xff0c;一起来看看吧~

NoSQL之Redis配置与优化(一)

关系数据库与非关系型数据库 &#xff1a; ●关系型数据库&#xff1a; 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是一种基于…

软件工程:万字长文,说透常见的5种部署策略(文末有总结)

在软件工程中&#xff0c;最终的价值交付&#xff0c;都是要通过软件的部署上线来完成的。 那如何将新的或改进的软件功能交付给用户&#xff0c;同时还要确保高质量、稳定性和用户体验&#xff0c;选择适当的部署策略变得至关重要。 复杂软件工程中&#xff0c;新功能的部署…

GC Root

开章&#xff0c;不知道有没有小伙伴跟我一样&#xff0c;在快要毕业或者换工作的时候疯狂刷八股文&#xff0c;这样做有什么坏处呢 好多面试题自己都是靠死记硬背&#xff0c;这也是我们过后压根记不着这些内容的原因&#xff1b;每次面试问题需要自己反复去刷&#xff0c;甚…

C++初阶:C++入门

目录 一.iostream文件 二.命名空间 2.1.命名空间的定义 2.2.命名空间的使用 三.C的输入输出 四.缺省参数 4.1.缺省参数概念 4.2.缺省参数分类 4.3.缺省参数注意事项 4.4.缺省参数用途 五.函数重载 5.1.重载函数概念 5.2.C支持函数重载的原理--名字修饰(name Mangl…

富士康曲线救国,iPhone 15 Pro订单较上代有减少,iPhone 15增加

据外媒报道&#xff0c;苹果将于9月13日凌晨举行的秋季新品发布会上推出iPhone 15系列智能手机。然而&#xff0c;令人惊讶的是&#xff0c;这款备受期待的手机在8月份就已开始批量生产&#xff0c;以确保上市初期供应充足。 随着iPhone 15系列发布时间的临近&#xff0c;越来越…

Cisco 5580 ASA service 如何Console?

一、Cisco ASA 5580 需要一个9针转Rj45到头子 如图&#xff1a; 二、插在设备的这个接口上 就可以了