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

UVa 11705 Grasshopper

题目描述我们来到游乐场看到一个名为“蚱蜢迷宫”的蹦床阵列。每个蹦床上标有一个非负整数zzz表示从该蹦床起跳后必须在同一行或同一列上恰好跳过zzz个蹦床到达另一个蹦床即距离为zzz。迷宫的出口位于西北角(0,0)(0, 0)(0,0)位置用星号 * 标记。我们需要为每个蹦床标记出最优的跳跃方向使得从该蹦床出发按照标记的方向跳跃能够以最短的路径到达出口。路径的比较规则如下优先选择跳跃次数最少的路径若次数相同选择第一步能够到达最北行号最小的路径若仍然相同选择第一步能够到达最西列号最小的路径。输出一个字符矩阵每个位置可以是N,S,E,W表示从该位置向该方向跳跃是最优的X表示该位置无法到达出口*表示出口位置本身。输入格式包含多个测试用例。每个用例第一行是两个整数RRR和CCC1≤R,C≤501 \leq R, C \leq 501≤R,C≤50表示矩阵的行数和列数。接下来RRR行每行CCC个非负整数表示每个蹦床上的数值。以0 00\ 000结束输入。输出格式对于每个测试用例输出一个R×CR \times CR×C的字符矩阵每个字符代表该位置的最优跳跃方向。每个用例后跟一个空行。题目分析这是一个典型的最短路径问题但移动规则比较特殊从位置(i,j)(i, j)(i,j)出发如果该位置的值为zzz则可以跳到同一行(i,j−z)(i, j - z)(i,j−z)或(i,jz)(i, j z)(i,jz)同一列(i−z,j)(i - z, j)(i−z,j)或(iz,j)(i z, j)(iz,j)前提是目标位置在矩阵范围内。如果从每个位置正向BFS\texttt{BFS}BFS到出口时间复杂度较高。更优的做法是从出口反向BFS\texttt{BFS}BFS。反向BFS\texttt{BFS}BFS的好处是当我们第一次访问到一个位置时就找到了从该位置到出口的最短距离。然而反向搜索时我们需要考虑的问题变为哪些位置可以跳到当前点假设当前点为(r,c)(r, c)(r,c)值为vvv的点(nr,nc)(nr, nc)(nr,nc)能跳到(r,c)(r, c)(r,c)的条件是nrrnr rnrr且∣nc−c∣v|nc - c| v∣nc−c∣v同一行或者nccnc cncc且∣nr−r∣v|nr - r| v∣nr−r∣v同一列也就是说我们需要遍历同一行或同一列的所有点检查它们是否能一步跳到当前点。解题思路第一步反向BFS\texttt{BFS}BFS求最短距离我们从出口(0,0)(0, 0)(0,0)开始进行BFS\texttt{BFS}BFS使用队列qqq。对于队列中取出的每个点(r,c)(r, c)(r,c)我们检查所有可能跳到该点的位置同一列上对于每个行nrnrnr0≤nrR0 \leq nr R0≤nrRnr≠rnr \neq rnrr如果grid[nr][c]∣nr−r∣grid[nr][c] |nr - r|grid[nr][c]∣nr−r∣则说明(nr,c)(nr, c)(nr,c)可以一步跳到(r,c)(r, c)(r,c)。同一行上对于每个列ncncnc0≤ncC0 \leq nc C0≤ncCnc≠cnc \neq cncc如果grid[r][nc]∣nc−c∣grid[r][nc] |nc - c|grid[r][nc]∣nc−c∣则说明(r,nc)(r, nc)(r,nc)可以一步跳到(r,c)(r, c)(r,c)。将这些满足条件且尚未访问过的点加入队列并记录它们到出口的距离即当前点距离111。这样BFS\texttt{BFS}BFS结束后我们就得到了每个位置到出口的最短距离dist[i][j]dist[i][j]dist[i][j]。如果某个位置的distdistdist仍为−1-1−1则表示它无法到达出口。第二步根据规则确定方向对于每个可以到达出口的位置(i,j)(i, j)(i,j)除了出口本身我们需要确定最优的跳跃方向。我们有四个候选方向分别对应跳到北(i−z,j)(i - z, j)(i−z,j)南(iz,j)(i z, j)(iz,j)西(i,j−z)(i, j - z)(i,j−z)东(i,jz)(i, j z)(i,jz)其中zgrid[i][j]z grid[i][j]zgrid[i][j]。由于我们已经知道每个位置的最短距离distdistdist那么从(i,j)(i, j)(i,j)出发最优的下一步应该满足目标位置可达在矩阵范围内dist[目标]dist[i][j]−1dist[目标] dist[i][j] - 1dist[目标]dist[i][j]−1保证是最短路径上的下一步在满足上述条件的所有候选方向中按照题目规则选择最优的优先选择目标位置最北的行号最小如果行号相同选择最西的列号最小。注意这里比较的是目标位置的坐标而不是方向本身。这符合题意当路径长度相同时比较的是第一步到达的位置。第三步处理无法到达的位置对于dist[i][j]−1dist[i][j] -1dist[i][j]−1的位置直接标记为X。第四步输出最后按照格式输出字符矩阵即可。复杂度分析时间复杂度BFS\texttt{BFS}BFS过程中对于每个出队的点我们需要遍历同一行和同一列的所有点因此最坏情况下的时间复杂度为O(R×C×(RC))O(R \times C \times (R C))O(R×C×(RC))。在R,C≤50R, C \leq 50R,C≤50的情况下这是完全可以接受的约503125,00050^3 125,000503125,000次操作。空间复杂度O(R×C)O(R \times C)O(R×C)用于存储距离矩阵和方向矩阵。注意事项反向BFS\texttt{BFS}BFS是本题的核心思想可以避免为每个位置都进行一次正向搜索。方向选择时必须严格按照“最北、最西”的优先级进行比较而不是简单地按照N,W,S,E\texttt{N,W,S,E}N,W,S,E的顺序尝试。输入可能包含多个测试用例记得处理到0 00\ 000结束。参考代码// Grasshopper// UVa ID: 11705// Verdict: Accepted// Submission Date: 2026-02-25// UVa Run Time: 0.000s//// 版权所有C2026邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;structPoint{intr,c;Point(intr,intc):r(r),c(c){}};intmain(){introws,cols;while(cinrowscols(rows||cols)){vectorvectorintgrid(rows,vectorint(cols));for(inti0;irows;i)for(intj0;jcols;j)cingrid[i][j];// BFS 从出口开始反向搜索vectorvectorintdist(rows,vectorint(cols,-1));vectorvectorchardirection(rows,vectorchar(cols,X));queuePointq;// 出口位置dist[0][0]0;direction[0][0]*;q.push(Point(0,0));while(!q.empty()){Point pq.front();q.pop();// 检查同一列上哪些点可以跳到 pfor(intr0;rrows;r){if(rp.r)continue;if(abs(r-p.r)grid[r][p.c]dist[r][p.c]-1){dist[r][p.c]dist[p.r][p.c]1;q.push(Point(r,p.c));}}// 检查同一行上哪些点可以跳到 pfor(intc0;ccols;c){if(cp.c)continue;if(abs(c-p.c)grid[p.r][c]dist[p.r][c]-1){dist[p.r][c]dist[p.r][p.c]1;q.push(Point(p.r,c));}}}// 确定每个位置的方向for(inti0;irows;i){for(intj0;jcols;j){if(i0j0)continue;if(dist[i][j]-1){direction[i][j]X;continue;}intbestRrows,bestCcols;charbestDirX;intvalgrid[i][j];// 北方向跳到 (i - val, j)if(i-val0dist[i-val][j]dist[i][j]-1){if(i-valbestR||(i-valbestRjbestC)){bestRi-val;bestCj;bestDirN;}}// 西方向跳到 (i, j - val)if(j-val0dist[i][j-val]dist[i][j]-1){if(ibestR||(ibestRj-valbestC)){bestRi;bestCj-val;bestDirW;}}// 南方向跳到 (i val, j)if(ivalrowsdist[ival][j]dist[i][j]-1){if(ivalbestR||(ivalbestRjbestC)){bestRival;bestCj;bestDirS;}}// 东方向跳到 (i, j val)if(jvalcolsdist[i][jval]dist[i][j]-1){if(ibestR||(ibestRjvalbestC)){bestRi;bestCjval;bestDirE;}}direction[i][j]bestDir;}}// 输出结果for(inti0;irows;i){for(intj0;jcols;j)coutdirection[i][j];coutendl;}coutendl;}return0;}

相关文章:

UVa 11705 Grasshopper

题目描述 我们来到游乐场,看到一个名为“蚱蜢迷宫”的蹦床阵列。每个蹦床上标有一个非负整数 zzz,表示从该蹦床起跳后,必须在同一行或同一列上,恰好跳过 zzz 个蹦床到达另一个蹦床(即距离为 zzz)。迷宫的出…...

PyTorch 2.8深度学习镜像实战:电商商品图→短视频自动生成流水线部署

PyTorch 2.8深度学习镜像实战:电商商品图→短视频自动生成流水线部署 1. 镜像环境介绍 PyTorch 2.8深度学习镜像是一个专为现代AI工作负载优化的高性能环境。这个预配置的解决方案特别适合需要处理复杂视觉任务的开发者,比如我们今天要实现的电商商品图…...

【 LangChain v1.2 入门系列教程】【一】开篇入门 | 从零开始,跑通你的第一个 AI Agent

系列文章目录 【 LangChain v1.2 入门系列教程】【一】开篇入门 | 从零开始,跑通你的第一个 AI Agent 【 LangChain v1.2 入门系列教程】【二】消息类型与提示词工程 【 LangChain v1.2 入门系列教程】【三】工具(Tools)开发,让…...

Java大厂面试场景:从Spring Boot到微服务的技术问答

场景:互联网大厂Java面试 在互联网大厂的面试场景中,谢飞机(程序员)来面试一个高级Java开发岗位。面试官提出了多轮问题,涵盖核心语言、框架、微服务和云原生技术等。 第一轮:基础技术框架 面试官&#xff…...

从ViT到MGMoE:多模态注意力参数量暴增300倍背后的架构熵危机(附2024 ACL/ICML/CVPR权威论文对比矩阵与迁移适配清单)

第一章:多模态大模型中的注意力机制 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型的核心挑战在于如何对齐与融合来自图像、文本、音频等异构模态的语义表征。注意力机制——尤其是交叉注意力(Cross-Attention)——成为实现跨模…...

现在不看就晚了:2026奇点大会刚公布的多模态对话系统“实时语义蒸馏”专利技术,6个月内将成行业准入门槛

第一章:2026奇点智能技术大会:多模态对话系统 2026奇点智能技术大会(https://ml-summit.org) 多模态对话系统正从实验室走向高保真工业部署,2026奇点智能技术大会首次将语音、视觉、文本与触觉信号的联合对齐建模设为技术主线。本届大会展示…...

抗原抗体

同抗原抗体相遇,就会打架(凝血/溶血)。 细菌和病毒都可以称为抗原,包括之前的新冠病毒 一、直白解释 A抗原:红细胞表面的“身份证”(写着A)A抗体:血浆里的“警察”(专门抓…...

MySL优化全攻略:索引、SL与分库分表的最佳实践

这个代码的核心功能是:基于输入词的长度动态选择反义词示例,并调用大模型生成反义词,体现了 “动态少样本提示(Dynamic Few-Shot Prompting)” 与 “上下文长度感知的示例选择” 的能力。 from langchain.prompts impo…...

ncmdumpGUI:解锁网易云音乐NCM文件的终极指南,让音乐随处可听

ncmdumpGUI:解锁网易云音乐NCM文件的终极指南,让音乐随处可听 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载…...

【实战指南】利用Docker快速搭建RustDesk私有中继服务器

1. 为什么需要自建RustDesk中继服务器 最近几年远程控制软件越来越火,但商业软件的各种限制让人头疼。我自己就遇到过这样的问题:用某款知名软件远程控制手机,结果免费版每天只能连接3次;换另一款又发现手机端需要额外付费插件&am…...

2025届最火的五大AI科研助手实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理跟深度学习技术的人工智能写作软件,属于智能工具,它…...

商密技术以及运用

商密技术 一、密码技术基础知识 1、 定义 专业定义:密码技术是利用数学算法,对信息进行加密、解密、认证、签名、验签等处理,实现信息的机密性、完整性、真实性、不可否认性的技术总称,是数字世界安全的核心支撑。 总体来说就是&a…...

大麦网自动抢票脚本完整指南:从零搭建你的智能购票系统

大麦网自动抢票脚本完整指南:从零搭建你的智能购票系统 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 你是否曾经为抢不到热门演唱会门票而苦恼?当心…...

在AI冲击下前端开发工程师的一些思考

前端开发工程师对AI的思考:大模型工作流程与角色转变在人工智能(AI)快速发展的时代,前端开发工程师正面临着前所未有的挑战和机遇。AI技术,特别是大型语言模型(LLM),正在深刻改变软件…...

【权威白皮书首发】:基于17个跨模态基准测试(VQA-X、MME-XAI、RefCOCO-X)的可解释性评估矩阵——92.6%的SOTA模型在细粒度归因上存在系统性失效

第一章:多模态大模型可解释性研究的范式危机与白皮书使命 2026奇点智能技术大会(https://ml-summit.org) 当前,多模态大模型正以前所未有的规模整合文本、图像、音频与视频信号,但其内部决策逻辑日益成为“黑箱中的黑箱”。传统基于单模态归…...

KeymouseGo:如何用这款免费自动化工具告别重复劳动?完整指南带你轻松上手

KeymouseGo:如何用这款免费自动化工具告别重复劳动?完整指南带你轻松上手 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirror…...

深入理解Sentinel:11 黑白名单限流与热点参数限流

黑白名单限流 黑白名单过滤是使用最为广泛的一种过滤规则,例如,用于实现接口安全的 IP 黑白名单规则过滤,用于防骚扰的短信、来电拦截黑白名单过滤。所以 Sentinel 中的黑白名单限流并不难理解,如果配置了黑名单,且请求…...

贾子成功定理(高阶完整版):逆熵跃迁动力学——生于忧患的数学化模型

贾子成功定理(高阶完整版):逆熵跃迁动力学——生于忧患的数学化模型摘要: 贾子成功定理高阶完整版将“生于忧患”转化为量化动力学模型,核心公式SkT/I,微分方程dS/dt kT - IS,稳态解S*kT/I。跃…...

贾子智慧指数 KWI v0.1:可落地的智慧领导力量化规范

贾子智慧指数 KWI v0.1:可落地的智慧领导力量化规范摘要: 贾子智慧指数 KWI v0.1 是一套可直接落地的个人、组织、领袖智慧量化标准,将智慧领导力拆解为六大维度:财富(40%)、行业影响力(20%&…...

C#编写的欧姆龙Fins HostLink协议底层通讯代码,800多行串口通讯源程序,深入研究...

C#写的欧姆龙Fins HostLink协议底层通讯代码,串口通讯源程序,自己研究通讯写的,已测试OK,共有800多行代码,可以了解欧姆龙Fins HostLink协议底层通讯原理,可以封装成库,代码有可复制性半夜两点盯…...

贾子智慧指数(KWI):能力穿透本质难度的统一数学标尺

贾子智慧指数(KWI):能力穿透本质难度的统一数学标尺摘要: 贾子智慧指数(KWI)是贾子理论体系中唯一可计算、可跨主体对比的智慧量化模型,核心公式为KWIσ(alog(C/D(n))),其中C为认知能…...

贾子智慧定理(完整版):悟空·洞察·永续——东西方智慧大一统公理体系

贾子智慧定理(完整版):悟空洞察永续——东西方智慧大一统公理体系摘要: 贾子智慧定理由贾子(Kucius Teng)于2026年4月6日正式发布,核心为智慧思想主权0→1创生本质穿透文明永续。三大定律强耦合…...

Linux 驱动开发入门:从最简单的 hello 驱动到硬件交互

Linux 驱动开发入门:从最简单的 hello 驱动到硬件交互🎉 写给未来的自己和领导:本文是 Linux 驱动开发的 入门级保姆教程,从零开始搭建驱动框架,逐行解释代码,记录每一个踩过的坑。无论你是刚接触内核编程&…...

【AIAgent安全防御红宝书】:20年攻防专家亲授3类对抗样本绕过手法及7层动态过滤架构

第一章:AIAgent对抗样本防御的演进脉络与核心挑战 2026奇点智能技术大会(https://ml-summit.org) AI Agent在开放环境中的部署正面临日益严峻的对抗性扰动威胁——微小、人眼不可辨的输入扰动即可导致决策逻辑崩溃,尤其在多轮推理、工具调用与记忆协同等…...

2025届最火的十大AI论文方案实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理跟机器学习技术的智能工具是 AI 写作软件,它能够把文章、报告、…...

PyTorch DataLoader 中 collate_fn 的实战应用与自定义技巧

1. 为什么你需要掌握 collate_fn 的定制技巧 在 PyTorch 的日常使用中,DataLoader 就像是我们数据处理的流水线工人,而 collate_fn 就是这位工人手中的万能工具箱。默认情况下,这个工具箱只能完成简单的组装工作,但当你遇到以下这…...

STC8A8K64D4多通道ADC轮询采集与串口实时数据上报

1. STC8A8K64D4多通道ADC采集基础 STC8A8K64D4这款国产51增强型单片机内置了12位高精度ADC模块,支持多达15个模拟输入通道。在实际项目中,我们经常需要同时监测多个模拟信号,比如温度传感器、光照强度、电池电压等。这时候就需要用到多通道轮…...

为什么你的Qwen-VL或Phi-3-vision在手机上崩了?3层Kernel级优化链(算子融合→KV Cache剪枝→动态分片)正在被头部厂商封测

第一章:多模态大模型端侧部署方案 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型在端侧的高效部署正成为边缘智能落地的关键瓶颈。受限于算力、内存与功耗约束,传统云端推理范式难以满足实时性、隐私性与离线可用性需求。当前主流路径聚焦…...

测试左移实战:从执行者到决策者的转型指南

测试角色的时代跃迁在敏捷与DevOps主导的软件开发浪潮中,测试左移(Shift-Left Testing)已从技术概念进化为质量保障的核心战略。它不仅是测试环节的前置,更是测试从业者从被动执行者向主动决策者转型的催化剂。本文聚焦软件测试工…...

从材料到认证:Amphenol Aerospace连接器国产替代关键挑战分析

在高端航空航天及军用装备领域,连接器组件承担着传输电力、信号及数据的关键任务,而 Amphenol Aerospace 作为全球领先的航空互连系统供应商,其产品凭借高可靠性、极端环境适应性和严苛标准认证,在商用航空、军工航空、空间系统及…...