代码随想录Day76(图论Part11)
97.小明逛公园(Floyd)
题目:97. 小明逛公园 (kamacoder.com)
思路:
答案
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt(); // 顶点数int m = scanner.nextInt(); // 边数int[][] grid = new int[n + 1][n + 1];final int INF = 10005; // 因为边的最大距离是10^4// 初始化图的邻接矩阵for (int i = 1; i <= n; i++) {Arrays.fill(grid[i], INF);grid[i][i] = 0; // 自己到自己的距离为0}// 读取边的信息并填充邻接矩阵for (int i = 0; i < m; i++) {int p1 = scanner.nextInt();int p2 = scanner.nextInt();int val = scanner.nextInt();grid[p1][p2] = val;grid[p2][p1] = val; // 注意这里是双向图}// 开始 Floyd-Warshall 算法for (int k = 1; k <= n; k++) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {grid[i][j] = Math.min(grid[i][j], grid[i][k] + grid[k][j]);}}}// 读取查询并输出结果int z = scanner.nextInt(); // 查询次数while (z-- > 0) {int start = scanner.nextInt();int end = scanner.nextInt();if (grid[start][end] == INF) {System.out.println(-1);} else {System.out.println(grid[start][end]);}}scanner.close();}
}
小结
126.骑士的攻击(A*算法)
题目:126. 骑士的攻击 (kamacoder.com)
思路:毫无疑问是最难的一题
答案
import java.util.*;class Knight implements Comparable<Knight> {int x, y, g, h, f;public Knight(int x, int y, int g, int h) {this.x = x;this.y = y;this.g = g;this.h = h;this.f = g + h;}@Overridepublic int compareTo(Knight k) {return Integer.compare(this.f, k.f); // 从小到大排序}
}public class Main {static int[][] moves = new int[1001][1001];static int[][] dir = {{-2, -1}, {-2, 1}, {-1, 2}, {1, 2},{2, 1}, {2, -1}, {1, -2}, {-1, -2}};static int b1, b2;static PriorityQueue<Knight> que = new PriorityQueue<>();public static int heuristic(Knight k) {return (k.x - b1) * (k.x - b1) + (k.y - b2) * (k.y - b2); // 统一不开根号,这样可以提高精度}public static void astar(Knight start) {que.add(start);while (!que.isEmpty()) {Knight cur = que.poll();if (cur.x == b1 && cur.y == b2)break;for (int i = 0; i < 8; i++) {int nextX = cur.x + dir[i][0];int nextY = cur.y + dir[i][1];if (nextX < 1 || nextX > 1000 || nextY < 1 || nextY > 1000)continue;if (moves[nextX][nextY] == 0) {moves[nextX][nextY] = moves[cur.x][cur.y] + 1;int nextG = cur.g + 5; // 马走日,1 * 1 + 2 * 2 = 5int nextH = heuristic(new Knight(nextX, nextY, 0, 0));que.add(new Knight(nextX, nextY, nextG, nextH));}}}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();while (n-- > 0) {int a1 = scanner.nextInt();int a2 = scanner.nextInt();b1 = scanner.nextInt();b2 = scanner.nextInt();for (int[] row : moves) Arrays.fill(row, 0);Knight start = new Knight(a1, a2, 0, heuristic(new Knight(a1, a2, 0, 0)));astar(start);que.clear(); // 清空队列System.out.println(moves[b1][b2]);}scanner.close();}
}
相关文章:
代码随想录Day76(图论Part11)
97.小明逛公园(Floyd) 题目:97. 小明逛公园 (kamacoder.com) 思路: 答案 import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();…...
工程化:Commitlint / 规范化Git提交消息格式
一、理解Commitlint Commitlint是一个用于规范化Git提交消息格式的工具。它基于Node.js,通过一系列的规则来检查Git提交信息的格式,确保它们遵循预定义的标准。 1.1、Commitlint的核心功能 代码规则检查:Commitlint基于代码规则进行检查&a…...
电脑有线网卡和无线网卡的MAC地址
电脑上的无线网卡和有线网卡是两种不同类型的网络接口卡,它们各自有不同的功能和连接方式。 无线网卡: 功能:无线网卡允许计算机通过无线信号连接到网络,通常是Wi-Fi网络。连接方式:无需物理电缆,通过无线…...
代码随想录-DAY②-数组——leetcode 977 | 209
977 思路 使用两个指针分别指向位置 0 和 n−1,每次比较两个指针对应的数,选择较大的那个逆序放入答案并移动指针。这种方法无需处理某一指针移动至边界的情况。 时间复杂度:O(n) 空间复杂度:O(1) 代码 class Solution { pub…...
稀疏数组搜索
题目链接 稀疏数组搜索 题目描述 注意点 字符串数组中散布着一些空字符串words的长度在[1, 1000000]之间字符串数组是排好序的数组中的字符串不重复 解答思路 因为数组中的字符串是排好序的,所以首先想到的是二分查找,先将数组中长度与s相同的字符串…...
存储器类型介绍
存储器 ROM 我们一般把手机和电脑的硬盘当作ROM。ROM的全称是:Read Only Memery,只读存储器,就是只能读不能写的存储器。但是现在的ROM不仅可以读,还可以写数据,比如给手机下载APP,就是给手机上的ROM写数据…...
论文学习笔记1:Federated Graph Neural Networks: Overview, Techniques, and Challenges
文章目录 一、introduction二、FedGNN术语与分类2.1主要分类法2.2辅助分类法 三、GNN-ASSISTED FL3.1Centralized FedGNNs3.2Decentralized FedGNNs 四、FL-ASSISTED GNNS4.1horizontal FedGNNs4.1.1Clients Without Missing Edges4.1.1.1Non-i.i.d. problem4.1.1.2Graph embed…...
[数据集][目标检测]轮椅检测数据集VOC+YOLO格式13826张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):13826 标注数量(xml文件个数):13826 标注数量(txt文件个数):13826 标…...
视频剪辑音乐自动卡点Pr插件 BeatEdit v2.2 免费下载
Premiere Pro 视频剪辑音乐自动卡点鼓点节拍插件 BeatEdit v2.2.000 下载地址 https://prmuban.com/39091.html BeatEdit 检测音乐中的节拍并在 Premiere Pro 时间轴中为它们生成标记。 创建与音乐同步的自动编辑,或让 BeatEdit 协助您的手动编辑过程。 2.2.000&am…...
【INTEL(ALTERA)】为什么Nios® II构建流程报告无法在 Windows WSL 上确定程序大小?
目录 说明 解决方法 说明 由于英特尔 Quartus Prime 专业版软件 19.3 版中的 nios2-elf-stackreport 实用程序出现问题,nios2-elf-stackreport 实用程序确实如此 不报告程序大小或堆栈堆栈大小。 解决方法 要解决此问题,编辑 nios2-stackreport.pl …...
2024年第十四届APMCM亚太地区大学生数学建模竞赛
C 题 基于量子计算的物流配送问题 随着电子商务的迅猛发展,电商平台对物流配送的需求日益增长。为了确保货物能够按时、高效地送达消费者手中,电商平台与第三方物流公司建立了紧密的合作关系。然而,面对大量的货物和多样的目的地,…...
删除账户相关信息
功能需求 获取正确的待删除账户名杀死系统中正在运行的属于该账户的进程确认系统中属于该账户的所有文件删除该账户 1. 获取正确的待删除账户名 #让用户输入账户名 read -t 10 -p "please input account name: " accountif [ -z $account ] thenecho "account…...
JavaSE (Java基础):面向对象(下)
8.7 多态 什么是多态? 即同一方法可以根据发送对象的不同而采用多种不同的方式。 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。在句话我是这样理解的: 在实例中使用方法都是根据他最开始将类实例化最左边的类型来定的&…...
Element中的日期时间选择器DateTimePicker和级联选择器Cascader
简述:在Element UI框架中,Cascader(级联选择器)和DateTimePicker(日期时间选择器)是两个非常实用且常用的组件,它们分别用于日期选择和多层级选择,提供了丰富的交互体验和便捷的数据…...
Construct公司 从 0 到 1 基于 Kitex+Istio 的微服务系统建设
本文根据 2024 年 5 月 25 日在上海举办的“云原生✖️AI 时代的微服务架构与技术实践”CloudWeGo 技术沙龙上海站活动中,Construct 服务端总监 Jason 的演讲《从 0 到 1 基于 Kitex Istio 的微服务系统建设》整理而来。 在微服务架构的浪潮中,企业面临…...
day04-组织架构
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.组织架构-树组件应用树形组件-用层级结构展示信息,可展开或折叠。 2.组织架构-树组件自定义结构3.组织架构-获取组织架构数据4.组织架构-递归转化树形…...
Web3 开发者入门手册:技能、工具和职业前景
原文:https://remote3.co/blog-post/how-to-become-a-web3-developer 作者:Paul Anderson 编译:TinTinLand Web3 是 2024 年科技领域最受瞩目的话题之一——Web3 令人激动的实用潜力可以跨越多个行业,早期采用者更有机会在未来…...
元宇宙虚拟实景展馆树立客户对企业的信任和好感
在数字化浪潮的推动下,企业迎来了前所未有的营销新机遇——3D数字展厅。3D数字展厅作为现代营销中的新型工具,不仅是企业与客户互动、传递信息的桥梁,更是企业展示实力、彰显品牌魅力的舞台。 辽宁3D数字展厅制作以其独特的设计理念和先进的制…...
【C语言】宏定义在 a.c 中定义,如何在 b.c 中使用?
宏定义的概念和使用原理 在 C 语言中,宏定义是一种预处理器指令,用于定义常量或者宏函数。宏在编译之前由预处理器展开,因此可以用来提高代码的可读性和维护性。宏定义使用 #define 指令,形式如下: #define 宏名 替换…...
vue3 滚动条滑动到元素位置时,元素加载
水个文 效果 要实现的思路就是,使用IntersectionObserver 检测元素是否在视口中显示,然后在通过css来进行动画载入。 1.监控元素是否视口中显示 const observer new IntersectionObserver((entries) > {entries.forEach((entry) > {if (entry.i…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
