代码随想录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…...
SOONet模型Python入门实践:用10行代码实现视频片段搜索
SOONet模型Python入门实践:用10行代码实现视频片段搜索 你是不是也遇到过这种情况:手里有一段很长的视频,想快速找到某个特定场景,比如“主角第一次出场的时候”或者“那个爆炸的镜头”,结果只能手动拖进度条…...
Nomic-Embed-Text-V2-MoE在AIGC内容审核中的应用:识别生成文本的违规风险
Nomic-Embed-Text-V2-MoE在AIGC内容审核中的应用:识别生成文本的违规风险 最近和几个做AIGC应用的朋友聊天,大家普遍提到一个头疼的问题:用户用模型生成的文本,时不时会冒出一些不合规的内容,比如涉及不当言论、暴力或…...
知识科普短片,AI如何“看懂”并剪出逻辑?揭秘分段剪辑的内在逻辑链
傍晚,你面对电脑屏幕,刚刚录完一段长达2小时的行业知识分享。你的目标是将其剪成一部15分钟、节奏明快的知识科普短片。手动操作意味着你要反复聆听,识别核心论点,标记关键转折,再小心翼翼地将碎片串联——这个过程动辄…...
Phi-4-mini-reasoning应用场景:密码学协议安全性逻辑推演与攻击路径模拟
Phi-4-mini-reasoning应用场景:密码学协议安全性逻辑推演与攻击路径模拟 1. 模型概述 Phi-4-mini-reasoning是由微软开发的3.8B参数轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。该模型主打"小参数、强推理、长上下文、低延…...
AXOrderBook:打造A股市场高效订单簿处理系统的完整指南
AXOrderBook:打造A股市场高效订单簿处理系统的完整指南 【免费下载链接】AXOrderBook A股订单簿工具,使用逐笔行情进行订单簿重建、千档快照发布、各档委托队列展示等,包括python模型和FPGA HLS实现。 项目地址: https://gitcode.com/gh_mi…...
Fedora 42 上 Podman 镜像拉取慢?5分钟搞定国内镜像源配置(保姆级教程)
Fedora 42 上 Podman 镜像拉取慢?5分钟搞定国内镜像源配置(保姆级教程) 刚接触 Fedora 42 的开发者们,是否经常被 Podman 拉取镜像时的蜗牛速度折磨得抓狂?每次看着进度条像老牛拉破车一样缓慢移动,心里是不…...
【智能电网会议】第三届智能电网与人工智能国际学术会议(SGAI 2026)
第三届智能电网与人工智能国际学术会议(SGAI 2026) 2026 3rd International Conference on Smart Grid and Artificial Intelligence 往届会后3-4个月检索 华东交通大学主办 IEEE出版,见刊检索有保障 会议官网: 第七届人工智能、网络与信息…...
从MP3到微信语音:一份完整的Java音频格式转换工具链搭建指南(附FFmpeg与silk_v3_encoder配置)
Java音频处理实战:构建MP3到微信语音的高效转换工具链 引言 在即时通讯应用开发中,音频消息的处理一直是技术难点之一。特别是当我们需要将常见的MP3格式转换为微信、QQ等平台专用的SILK编码格式时,开发者往往需要跨越多个技术环节。本文将带…...
从OpenJDK到GraalVM:JDK21安装后,你还可以试试这些高性能Java运行时
从OpenJDK到GraalVM:JDK21安装后,你还可以试试这些高性能Java运行时 当你完成JDK21的基础安装后,Java生态的探索才刚刚开始。现代Java开发早已不再局限于传统JVM,越来越多的创新运行时正在重塑性能边界。本文将带你深入GraalVM、L…...
如何永久保存微信聊天记录?WeChatMsg完整备份方案详解
如何永久保存微信聊天记录?WeChatMsg完整备份方案详解 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...
