(bfs无边权最短路)Catch That Cow

2023/11/30 10:07:07

Problem - 2717 (hdu.edu.cn)

我的思路:

当时想的是dp,dfs(深度优先做不了,求解要把所有可能性都遍历完,复杂度不合适)啥的,完全没想到是bfs的最短路。

题解思路:

每次行动耗费1时间,问到达某点的最短时间。
那就是边权为1的最短路问题了。

代码:

//边权为1的bfs最短路,新情景,每次移动时间耗费+1
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int N = 1e5 + 10;
int n,k;

queue<int> q;
int bfs(){
    vector<int> dis(N+1,-1);
	q.push(n);
	dis[n] = 0;
	while(q.size()){
		int t = q.front();
		q.pop();
		for(auto i : vector<int>{1,-1,t}){
			int x = t + i;
			if(x < 0 || x >= N ) continue;
			if(dis[x] != -1) continue;
			q.push(x);
			dis[x] = dis[t] + 1;
			if(x == k) return dis[x];
		}
	}
}
int main(){
	
	while(cin >> n >> k){
		while(q.size()) q.pop(); 
		if(n >= k) cout << n-k << endl;
		else cout << bfs() << endl;
	}
	return 0;
}

套路:

为什么不用dp?1e5的复杂度,不合适。就算一维dp也是需要两重循环的

1)bfs无边权最短路

前提条件:求最短路,无边权图。

情景:

1)Catch That Cow

  • Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
  • Teleporting: FJ can move from any point X to the point 2 × X in a single minute.
  • 每次移动,时间加一。时间也可以当作是一种距离。
    2)nearest Black Vertex
  • At least one vertex is painted black.
  • For every i=1,2,…,K, the following holds:
    • the minimum distance between vertex pi​ and a vertex painted black is exactly di​.
    • 把不符合要求的棋子标记为白,然后找出每个白棋子距离最近的黑棋子的距离。

都是需要找一个边权为1的图力点之间的最短距离。

应对:

1)求一个点到n个点的最短路:

把这个点当作起点。

2) 求1种点到距离另一种点的最短距离

把其中一种点全部推入循环,然后dis设置为0.n个起点。

#bfs无边权最短路


http://www.jnnr.cn/a/434589.html

相关文章

AutoCAD介绍——带你了解最强的CAD软件

AutoCAD介绍——带你了解最强的CAD软件 什么是AutoCAD应用领域功能特点版本发展总结 什么是AutoCAD Autodesk的AutoCAD是一款世界著名的CAD软件&#xff0c;其全称为“Auto Computer-Aided Design”&#xff0c;是一种计算机辅助设计工具&#xff0c;用于帮助用户创建和编辑二…

Python系列之Windows环境安装配置

目录 一、Python安装 1.1下载 1.2 安装 1.3增加环境变量 二、PyCharm安装 2.1 PyCharm简介 2.2 PyCharm下载安装 一、Python安装 1.1下载 python 官网The official home of the Python Programming Languagehttps://www.python.org/downloads/ 1.2 安装 要勾选选项 Ad…

局域网远程桌面工具推荐

有多种软件选项适用于局域网 (LAN) 中的远程桌面&#xff0c;包括 微软远程桌面、Splashtop、Teamviewer 等。 以下是根据性能、安全性、价格、品牌历史和其他因素对这些软件选项进行的详细比较和分析。 微软远程桌面&#xff1a; 微软远程桌面是专为 Windows 设备设计的远程…

测试人员的启蒙指南

文章目录 一. 了解测试1. 生活中的测试场景2. 什么是软件测试3. 实战练习 二. 软件测试和软件开发的区别三. 软件测试和软件调试的区别四. 软件测试的发展五. 软件测试的岗位六. 一个优秀的软件测试人员具备的素质 本篇中介绍测试人员是干什么的, 起到启蒙和了解的作用, 重点是…

如何利用社交媒体来做Etsy店铺推广?

利用社交媒体是 Etsy 店铺推广的重要一环。通过创作优秀的社交媒体内容、定期发布内容、与关注者互动和利用广告&#xff0c;你可以吸引更多的潜在客户&#xff0c;增加你的店铺销售量和品牌影响力。以下是详细说明如何利用社交媒体来做店铺推广&#xff1a; 选择适合的社交媒体…

python基本数据类型---数字字符串

引入 在内存中存储的数据可以是不同的数据类型。比如名字可以使用字符串存储&#xff0c;年龄可以使用数字存储&#xff0c;python有6种基本数据类型&#xff0c;用于各种数据的存储&#xff0c;分别是&#xff1a;numbers(数字类型)、string(字符串)、List(列表)、Tuple(元组…

【五一创作】红黑树数据结构

现在JAVASE中HashMap中底层源码是由数组链表红黑树进行设计的&#xff0c;然后很多地方也是用到红黑树&#xff0c;这里单独对红黑树数据结构进行简单的介绍。 目录 红黑树概念 红黑树的性质 自平衡规则 代码 红黑树概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;…

中间件漏洞(一)CVE-2013-4547(文件名逻辑漏洞)

目录 1. 了解nginx的工作原理 2. 漏洞原理及举例分析 3. 前端php源码分析 4. 注入思路 5. 漏洞复现 5.1 上传文件并抓包分析 5.2 通过访问文件执行php 注意一点 6. 漏洞修复 1. 了解nginx的工作原理 nginx是以PHP语言为主。像Apache一样&#xff0c;Nginx自身是不支持解…

第2关:用flex生成PL语言的词法分析器

任务描述 经过上个任务的磨砺&#xff0c;相信大家已经熟悉了lex/flex的使用。这一次我们将利用flex工具生成PL语言的词法分析器&#xff0c;要求输入一个PL语言源程序文件demo.pl&#xff0c;输出一个文件tokens.txt&#xff0c;该文件包括每一个单词及其种别枚举值&#xff0…

前端存储二:indexedDB

indexedDB 特点&#xff1a;以域名纬度&#xff0c;浏览器大量结构化数据存储方案&#xff0c;运行在浏览器的非关系型数据库。 大小&#xff1a;不会小于 250MB&#xff0c;支持二进制存储。 接口&#xff1a;异步接口&#xff0c;支持事物机制 这里使用网页脚本生成&#x…

非静压模型SWASH学习(7)——自制算例Lock-Exchange

自制算例Lock-Exchange 算例简介模型配置网格及参数设置网格与地形初始条件与边界条件物理参数设置数值求解方法模型输出计算时间 模拟结果 SWASH是由Delft大学开发&#xff0c;用于模拟非静压条件下的水动力/波浪运动的数值模型。 与模型原理相关的内容详见以下论文&#xff1…

创建线索二叉树

创建线索二叉树 一、创建线索二叉树一、案例1、前序线索二叉树2、中序线索二叉树3、后序线索二叉树 一、创建线索二叉树 现将某结点的空指针域指向该结点的前驱后继&#xff0c;定义规则如下&#xff1a; 若结点的左子树为空&#xff0c;则该结点的左孩子指针指向其前驱结点。…

Java中的注解和反射

注解 在Java程序中&#xff0c;我们可以在很多地方看到注解&#xff0c;如一下情况: 注解有检查和约束的作用 内置注解 当被Deprecated注解修饰的方法被使用的时候&#xff0c;方法会被画上杠&#xff1a; 元注解 当我们打开一个注解的时候&#xff0c;可以看到以下这些信…

数据结构学习分享之顺序表详解

数据结构第二课 1. 前言2. 线性表3. 顺序表3.1 概念以及结构3.11 静态顺序表3.12 动态顺序表 4. 顺序表的实现4.1 顺序表内容的命名4.2 初始化结构4.3 初始化函数4.4 扩容函数4.5 尾插函数4.6 打印函数4.7 尾删函数4.8 头插函数4.9 头删函数4.10 销毁顺序表 5. 写代码时应该注意…

C语言从入门到精通第17天(指针和数组联用)

指针和数组联用 不同类型指针变量之间的区别数组的指针指针数组 不同类型指针变量之间的区别 在了解数组和指针联用之前&#xff0c;我们先对指针变量进行补充。我们对比一下int *p1和char *p2的区别&#xff1f; 相同点&#xff1a; 都是指针变量都是用来保存一个内存地址编…

Windows安装mariadb,配置环境变量(保姆级教学)

软件下载地址&#xff1a;https://mariadb.com/downloads/ 1.双击下载好的软件 2.点击next 3.勾选我同意&#xff0c;点击next 4.这里那你可以设置你要安装的路径&#xff0c;也可以使用默认的&#xff0c;之后点击next 5.如图所示&#xff0c;设置完点击next 6.接下来就默…

小黑子—Java从入门到入土过程:第八章

Java零基础入门8.0 Java系列第八章1. 双列集合 Map1.1 Map 集合中常见的API1.2 Map 集合的遍历方式1.2 - I 第一种遍历方式&#xff1a;键找值KeySet 方法1.2 - II 第二种遍历方式&#xff1a;键值对 entrySet 方法1.2 - III 第三种遍历方式&#xff1a;lambda表达式 1.3 HashM…

简单有趣的轻量级网络 Shufflenet v1 、Shufflenet v2(网络结构详解+详细注释代码+核心思想讲解)——pytorch实现

这期博客咱们来学习一下Shufflenet系列轻量级卷积神经网络,Shufflenet v1 、Shufflenet v2。 首先学习一下,Shufflenet v1网络: 论文下载链接: Shufflene系列轻量级卷积神经网络由旷世提出,也是非常有趣的轻量级卷积神经网络,它提出了通道混合的概念,改善了分组卷积存…

YOLOv5 txt标签转图像标签(多个标签)

Python YOLOv5 txt标签转图像标签&#xff08;多个标签 txt的数据如图所示1.读原始图像以及对应的txt文件2.获得原始图像的大小3.生成一张大小相同&#xff0c;黑色背景的图片4.读取txt文件&#xff0c;循环的增加标签5.获得不规则图形&#xff08;标签&#xff09;6.完整代码7…

[Git] Git零基础?带你快速入门,示例练习上手

&#x1f61a;一个不甘平凡的普通人&#xff0c;致力于为Golang社区和算法学习做出贡献&#xff0c;期待您的关注和认可&#xff0c;陪您一起学习打卡&#xff01;&#xff01;&#xff01;&#x1f618;&#x1f618;&#x1f618; &#x1f917;专栏&#xff1a;算法学习 &am…
最新文章