蓝桥杯——星际旅行(bfs+邻接表优化)

题解:P11046 [蓝桥杯 2024 省 Java B] 星际旅行 简单BFS题目 阅读详情

一.题目

分析:只要是能传送过去并且传送次数不为0,就算可以到达,所以这里不能用dfs来,很明显的bfs算法,分层遍历,每一层会消耗一次传送次数,但是本题的数据过大,如果使用邻接矩阵来作为visited数组那么时间复杂度过高,只能通过部分测试用例

1.使用邻接矩阵遍历传送阵时间复杂度为O(n),假如有50万个星球,那么就需要遍历50万次

2.使用邻接表寻找传送阵时间复杂度为O(1)

二.代码

import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Scanner;
//1:无需package
//2: 类名必须Main, 不可修改

public class Main {
        public static double res;
        static class pair{
        int x;//当前星球
        int y;//剩余传送次数
        public pair(int x,int y)
        {
            this.x = x;
            this.y = y;
        }
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();//n个星球
        int m = scan.nextInt();//m个双向传送门
        int q = scan.nextInt();//q个盲盒
        List<Integer>[] mark = new LinkedList[n+1];
        for (int i = 0; i <mark.length; i++) {
            mark[i] = new LinkedList<>();
        }
        for(int i = 1;i<=m;i++)
        {
            int x = scan.nextInt();
            int y = scan.nextInt();
            mark[x].add(y);//表示可以传送
            mark[y].add(x);
        }
        for(int i = 0;i<q;i++)
        {
            int x = scan.nextInt();//起始星球
            int y = scan.nextInt();//传送次数
            res += bfs(x,y,n,mark);
        }

        System.out.printf("%.2f",(double)res/q);
        scan.close();
    }
    public static int bfs(int index,int cnt,int n,List<Integer>[] mark)
    {
        Queue<pair> queue = new LinkedList<>();
        queue.add(new pair(index,cnt));
        int sum = 0;
        boolean[] map = new boolean[n+1];
        map[index] = true;//已经访问过该星球
        sum++;//表示访问当前星球
        while(!queue.isEmpty())
        {
            //需要分层遍历
            int tmp = queue.size();
            for(int i = 0;i<tmp;i++)
            {
                pair now = queue.poll();
                if(now.y<=0)  break;
                for(int j = 0;j<mark[now.x].size();j++)
                {
                    if(map[mark[now.x].get(j)]!=true)//表示可以访问入队
                    {
                        queue.add(new pair(mark[now.x].get(j),now.y-1));//到达需要消耗一次传送次数
                        map[mark[now.x].get(j)] = true;
                        sum++;
                    }
                }
            }
        }
        return sum;
    }
}

三.问题分析

1.第一次没有考虑到数据过大没有使用邻接表优化,注意使用集合数组前都需要为他们申请空间

2.多次写代码时写错变量,不够专注

别只盯着AC!从2024蓝桥杯JavaB组真题,拆解‘期望题’与‘大模拟’的破局思路 本文深入解析2024蓝桥杯JavaB组省赛真题,聚焦‘期望题’与‘大模拟’两大核心题型。通过E、F题的期望计算和C、G题的复杂场景建模,揭示解题思维链条与代码实现技巧,帮助选手提升数学建模与工程化思维能力,在竞赛中高效应对各类挑战。 阅读详情

相关推荐

星际交流(回溯)

算法训练 星际交流   时间限制:1.0s   内存限制:256.0MB        问题描述   人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样 的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果

攀大小熊猫的专栏 1467

【蓝桥杯】星际旅行 19726

小明国庆节准备去某星系进行星际旅行,这个星系里一共有n 个星球,其中布置了 m 道双向传送门,第 i 道传送门可以连接​两颗星球( 且任意两颗星球之间最多只有一个传送门)。他看中了一款 “旅游盲盒”,一共有Q 个盲盒,第i 个盲盒里的旅行方案规定了旅行的起始星球​和最多可以使用传送门的次数 。只要从起始星球出发,使用传送门不超过规定次数能到达的所有星球都可以去旅行。小明关心在每个方案中有多少个星球可以旅行到。小明只能在这些盲盒里随机选一个购买,他想知道能旅行到的不同星球的数量的期望是多少。

Robin Hu的专栏 954

74LS161/48 交通灯控制系统:30-5-20-5 时序逻辑电路 Multisim 仿真验证

本文详细解析了基于74LS161/48芯片的交通灯控制系统设计,通过Multisim仿真验证30-5-20-5时序逻辑电路。从系统架构搭建、状态机实现到波形分析,提供全流程操作指南与典型问题排查方法,助力数字电路课程设计高效完成。

weixin_26742753的博客 377

星际旅行,第15届蓝桥杯javaB组试题F题解

这道题首先要看懂题。就是看第一个盲盒,2,1初始在2号星球他只有一个传送门的机会,但后面题解说的他能旅行三个星球一共,其实意思是题目中说的。也就是从2传送到1是花费一次,他也有可能从2传送到3也是花费一次,所以说他有可能到达1和3,加上初始的2,所以就是有可能旅行的星球是3个。他说的是可能性一共有多少个可以实现旅行,所以这里就可以用到dfs的思路,也就是。接下来就把代码放上,不一定对,是个人的一点见解,有问题多谢大家指出来。

m0_70208894的博客 1085

40岁从智驾转具身智能之路

我的工作经历比较复杂,本科毕业后工作2年再次读研的,本科和硕士都是机械专业,硕士毕业后干了5年CAM和机器人再转入到自动驾驶行业。在自动驾驶干了8年,发现自动驾驶已经到了一个瓶颈,再次转行做具身智能。我就谈谈自己的最近这次转型之路。

hzm8341的博客 637

翻倍密码系统主图指标-行情买卖以及持股-翻倍密码买点-获利了结,通达信炒股软件指标公式

华森制药,上图案例走势,低位出现“开始潜伏”信号,进场红色K线持股待涨,进入“翻倍密码买点”,开启紫色K线的持续上涨,目前也达到了翻倍行情,还没出现“获利了结”的出场信号。这套操盘系统,即便出现信号没走出翻倍行情,也都是可以全身而退,获利出局,或者微微止损出场,并不代表每一个波段都能翻倍,但是走翻倍行情,你按照信号参与或持仓是不会错过的。用这个操盘系统操作,你也不需要天天的盘中看盘,不需要担心盘中的震荡,只要趋势不变,哪怕是偶尔出现跌停,也不影响行情的继续上涨,这都是上涨途中的正常调整。

weixin_69760830的博客 3674

题目 3230: 蓝桥杯2024年第十五届省赛真题-星际旅行

题目 3230: 蓝桥杯2024年第十五届省赛真题-星际旅行时间限制: 2s 内存限制: 512MB 提交: 1290 解决: 149题目描述小明国庆节准备去某星系进行星际旅行,这个星系里一共有 n 个星球,其中布置了 m 道双向传送门,第 i 道传送门可以连接 ai,bi 两颗星球(ai , bi 且任意两颗星球之间最多只有一个传送门)。他看中了一款 “旅游盲盒”,一共有 Q 个盲盒,第 i 个盲盒里的旅行方案规定了旅行的起始星球 xi 和最多可以使用传送门的次数 yi。

m0_75262437的博客 532

GEO优化内容营销策略:从规划到落地的全流程指南

GEO内容营销是通过地域化内容提升本地搜索排名、增加流量和转化率的策略。核心包括:构建本地用户画像,挖掘需求关键词;策划本地文化融合、案例研究等多样化内容;通过网站、社交媒体、本地KOL等渠道精准分发;优化本地关键词和视觉元素;监测数据并动态调整。案例显示,咖啡馆、工业企业和服装品牌通过本地化短视频、KOL合作及社群运营,显著提升了搜索排名、客流量和销售额。关键原则是内容本地化、精准分发、KOL合作、激励用户生成内容及数据驱动优化,实现高效本地市场渗透。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 1326

2024蓝桥杯Java B组 复盘贴

可以认为主/副节点中的队列是一个长度无限的一维数组,下 标为 0, 1, 2, 3 . . . ,同时副节点中的元素的同步顺序和主节点中的元素添加顺序 保持一致。对于一个有 n 位的十进制数 N = d1d2d3 . . . dn,可以生成一个类斐波那契数 列 S,数列 S 的前 n 个数为 {S 1 = d1, S 2 = d2, S 3 = d3, . . . , S n = dn},数列 S 的 第 k(k > n) 个数为 ∑k−1 i=k−n S i。分析:唯一不会写的,想搜,但是超时。

qiu_c的博客 1436

飞凌OK3588-C Linux R4系统下MIPI YUV摄像头CSI尺寸错误排查与极性适配方案

本文详细介绍了在飞凌OK3588-C平台的Linux R4系统下调试MIPI YUV摄像头时遇到的'csi size err'错误排查与极性适配方案。通过分析信号极性、驱动参数调整及FPGA协同调试,提供了从硬件检测到系统级调试的完整解决方案,帮助开发者快速解决类似问题。

bean的博客 257

26届数字IC秋招笔试面试全攻略 - CPU基础架构-数字IC设计专家

本文介绍了CPU基础架构的三大关键技术:流水线、冒险处理和指令集设计。首先解析了经典五级流水线结构(取指、译码、执行、访存、写回)及其性能指标。其次详细阐述了三种流水线冒险(数据、控制、结构)及解决方案,如数据前递、分支预测等。最后对比了RISC与CISC指令集特点,并以RISC-V为例说明指令格式设计原则。全文系统梳理了CPU核心架构知识,为数字IC设计提供重要参考。

2301_79143213的博客 930

2025蓝桥杯Java组省赛冲刺指南(高频考点解析+真题实战)

本文为2025年蓝桥杯Java组省赛提供全面的冲刺指南,涵盖高频考点解析和真题实战技巧。重点讲解动态规划、图论算法、数论与字符串处理等核心内容,帮助考生高效备考。通过分阶段复习策略和真题演练,提升Java编程能力和竞赛水平。

tgb34567890的博客 913

ZYNQ 网络通信的四种实现方案

一,ZYNQ MIO以RGMII 接口连接外部PHY芯片实现LWIP网络通信。 二,ZYNQ PS 的 ENET0/ENET1 通过 EMIO 的方式扩展至 PL,在 PL 中通过 RGMII 接口连接扩展子卡实现 LWIP 网络通信。 在PL中搭建了1个AXI 1G/2.5G Ethernet Subsystem以及1个AXI Direct Memory Access IP 核。这两个 IP核均通过AXI 总线经S_AXI_HP0 口与PS 连接,PS 通过AXI 总线对其进行配置和控..

wangjie36的博客 1万+

蓝桥杯备战

文章摘要: 星际旅行:使用BFS算法解决图遍历问题,邻接矩阵实现会超时,改用邻接表优化后通过。 约瑟夫环:利用数学递推公式高效求解,时间复杂度O(n),避免模拟过程。 买不到的数目:采用动态规划方法暴力求解两个数的最大不可组合数,注意数组边界处理。 冰雹数:优化暴力解法,使用记忆化数组存储中间结果,同时注意处理大数情况。 大幂数:使用快速幂算法判断数字是否可表示为连续自然数的幂次和,并输出幂次最大的表达式。 各问题都展示了算法优化技巧:数据结构选择、数学规律应用、动态规划、记忆化处理和快速幂运算等。

Einsail的博客 108

风控系统中的架构设计原型图分析与实践探讨

本文探讨了风控系统的架构设计原型图在风险管理中的重要性。通过分析多个案例,文章展示了如何利用架构设计原型图提升团队沟通效率,优化系统结构与功能。强调了良好的架构设计不仅有助于系统的可扩展性和可维护性,还能增强对风险的应对能力。最后,呼吁金融行业持续关注技术进步与市场需求变化,以不断提升风控系统的设计与实施效果。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

蓝桥杯省赛Java B组真题解析与备赛经验分享

通过最小公倍数规律发现每10个数的循环周期为120,直接利用数学公式计算202420242020个数的对应值,省去循环计算步骤。复盘发现应使用动态数组按规律递推,重点掌握"2*前1个数-前k+1个数"的生成规则,避免无效内存分配。通过枚举k值找到最小期望,注意N必须是k的整数倍。实际使用中发现InsCode的项目生成功能特别适合快速验证算法思路,省去了环境搭建的时间。建议先处理三人寝成对入座六人桌,再安排四人寝,最后用两人寝填补空缺。建议先掌握基础版本再挑战难题,比赛时合理分配时间,确保基础题得分。

MoonbeamFalcon67的博客 459

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

蓝桥杯关键知识点速记

蓝桥杯关键知识点速记总结

要努力去发光,而不是被照亮~ 510

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

蓝桥杯零基础小白临时突击Day05

我真的麻了,我已经没力气说话了,我真的服了,这是简单题该出的题目吗?我真的失去了所有力气。

2201_75456435的博客 204

c++蓝桥杯题目积累

P1055 [NOIP 2008 普及组] ISBN 号码 - 洛谷

2401_86043214的博客 239

CCF202012-5 星际旅行【线段树】(100分题解链接)

试题编号: 202012-5 试题名称: 星际旅行 时间限制: 3.0s 内存限制: 512.0MB 问题描述: 题目描述 乔帝要规划一次星际旅行,星际空间可以视为一个3维坐标系,乔帝有n(n≤1,000,000,000)个动力装置排成一行(下标从1到n)。 第i个动力装置可以让他的飞船3个维度的坐标分别增加xi,yi,zi。一开始这些动力装置的所有参数都是0。 在规划过程中,乔帝可能会对动力装置进行调整,也可能会对一些动力装置的动力进行评估。 具体来说,乔帝会进行m(m≤40000)次操作,每次操作可能是

海岛Blog 2869

iOS 多语言本地化教程,VS Code KXApp 编辑 String Catalog .xcstrings

做 iOS 多语言本地化总要在 VS Code 和 Xcode 之间来回切?这篇讲用 KXApp(快蝎)在 VS Code 里直接编辑 String Catalog(.xcstrings):双击打开和 Xcode 一样的表格,`.xcstrings` 与老的 `.strings`、`.stringsdict` 同表编辑,加语言同步登记到工程、从源码扫描同步新 key,复数、设备变体和变量占位都在表里处理,改源语言文本后已有翻译自动标需复核。文件仍是标准格式,回 Xcode 打开一致。

2501_91592143的博客 148

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:三分法求单峰函数最值解析

最近正是刷题备赛的黄金窗口:第十八届蓝桥杯软件赛报名 2026-10-08 10:00—12-18 14:00,省赛(C/C++·Python 程序设计)定在 2027-04-10 9:00–13:00;二分大家都会,但二分只能处理"单调或判定性"问题,遇到"极值"就不灵了。(加权平均 x = (3·10+1·20+4·30+2·60+5·80)/15 = 46,不舒服度 = 3·36²+1·26²+4·16²+2·14²+5·34² = 11760。——这时三分法就是"万能钥匙":只要单峰,直接搜。

IT_Scratch的博客 218

蓝桥杯LV1 - 找到最多的数

在一个 n×mn×m 的矩阵中,有一个数字出现了超过一半的次数,请设计一个高效算法找到这个数字。

2402_87421821的博客 75

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析

蓝桥杯报名正在火热进行(软件赛报名 2026-10-08—12-18,省赛 2027-04-10),电子学会 12 月软件编程(C/C++ 一级至十级、Python 一级至六级)考级报名也已开启(9/23—12/2),全国青少年信息素养大赛算法应用主题赛同步推进——把 LCA 这个模板练熟,正是冲刺这些赛事树型考点的关键一步。所谓「最近公共祖先」:在一棵以某个节点为根的树里,两个节点 u、v 向上追溯,最早交汇的那个祖先就叫它们的 LCA。比如家谱里,你和你表哥最近的共同长辈就是你们的祖父。

IT_Scratch的博客 530

蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园成语接龙大挑战解析

备考季又到了——第十八届蓝桥杯 STEMA 11 月省考报名正热(,Scratch 组 90 分钟);中国电子学会报名 9 月 23 日—12 月 2 日、统考 12 月 12—13 日;也已进入报名 / 基础能力评估窗口。这三大标志性赛事的图形化考点高度重合,今天用一个原创项目「校园成语接龙大挑战」,把六件套一次性串起来,一篇顶三篇备考。

IT_Scratch的博客 436

蓝桥杯青少组图形化+信息素养+电子学会Scratch考级:校园口算闯关解析

用最朴素的四则运算,把"变量 / 列表 / 循环 / 条件 / 自制积木 / 广播"六件套练得明明白白——这正是蓝桥杯程序设计组 Scratch 赛项、电子学会图形化三/四级考级、全国青少年信息素养大赛图形化方向共同的高频考点。把这个项目吃透,等于同时握住了三类赛事的"基础分"。它既是蓝桥杯程序设计组 Scratch 赛项的典型练手题,也完全对标电子学会图形化三/四级"运算与列表"考点,更是信息素养大赛图形化算法应用主题赛的入门脚手架。是"校园打字的速度挑战""图形化计算器",还是"记忆力翻牌"?

IT_Scratch的博客 181
上一篇: 蓝桥杯—最少操作数
下一篇: 算法—博弈问题
Vaclee
博客等级 码龄3年 471粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值