L3-1 夺宝大赛-2024天梯赛(内存超限解决方法)

题目

夺宝大赛的地图是一个由 n×m 个方格子组成的长方形,主办方在地图上标明了所有障碍、以及大本营宝藏的位置。参赛的队伍一开始被随机投放在地图的各个方格里,同时开始向大本营进发。所有参赛队从一个方格移动到另一个无障碍的相邻方格(“相邻”是指两个方格有一条公共边)所花的时间都是 1 个单位时间。但当有多支队伍同时进入大本营时,必将发生火拼,造成参与火拼的所有队伍无法继续比赛。大赛规定:最先到达大本营并能活着夺宝的队伍获得胜利。
假设所有队伍都将以最快速度冲向大本营,请你判断哪个队伍将获得最后的胜利。

输入格式:
输入首先在第一行给出两个正整数 m 和 n(2<m,n≤100),随后 m 行,每行给出 n 个数字,表示地图上对应方格的状态:1 表示方格可通过;0 表示该方格有障碍物,不可通行;2 表示该方格是大本营。题目保证只有 1 个大本营。
接下来是参赛队伍信息。首先在一行中给出正整数 k(0<k<m×n/2),随后 k 行,第 i(1≤i≤k)行给出编号为 i 的参赛队的初始落脚点的坐标,格式为 x y。这里规定地图左上角坐标为 1 1,右下角坐标为 n m,其中 n 为列数,m 为行数。注意参赛队只能在地图范围内移动,不得走出地图。题目保证没有参赛队一开始就落在有障碍的方格里。

输出格式:
在一行中输出获胜的队伍编号和其到达大本营所用的单位时间数量,数字间以 1 个空格分隔,行首尾不得有多余空格。若没有队伍能获胜,则在一行中输出 No winner.

分析

计算最短路径,用BFS来做。
刚开始的思路是对于每一组输入士兵的起点分别dfs计算到大本营的最短路径,那么结果就是这样,内存超限了最后两个点。
在这里插入图片描述
解决方法就是从大本营开始bfs地图上每一个能够到达的点,到达某点后记录下到达该点的最短距离,bfs第一次到达该点一定是最短距离。

代码

#include<iostream>
#include<queue>
#include<algorithm>
#include<unordered_map>
using namespace std;
int n,m;
int k;
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int mp[110][110];
struct node{int x,y,val;
};
struct node2{int id,val;
}step[1100];
bool cmp(node2 a,node2 b){return a.val<b.val;
}
int vis[110][110];
void bfs(int x,int y){queue<node>q;q.push({x,y,0});while(!q.empty()){node t=q.front();// cout<<vis[t.x][t.y]<<endl;q.pop();for(int i=0;i<4;i++){int nx=t.x+dir[i][0];int ny=t.y+dir[i][1];if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&mp[nx][ny]==1&&vis[nx][ny]==0){vis[nx][ny]=t.val+1;q.push({nx,ny,t.val+1});}}}
}
int main(){cin>>n>>m;int stx,sty;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>mp[i][j];if(mp[i][j]==2) {stx=i;sty=j;}}}bfs(stx,sty);int k;cin>>k;unordered_map<int,int>cnt;for(int i=1;i<=k;i++){int x,y;cin>>y>>x;step[i].val=vis[x][y];step[i].id=i;cnt[step[i].val]++;}sort(step+1,step+1+k,cmp);for(int i=1;i<=k;i++){if(cnt[step[i].val]==1&&step[i].val>0){cout<<step[i].id<<' '<<step[i].val;return 0;}}cout<<"No winner."<<endl;
}
/*
//错误代码,从每一个终点开始bfs,得18分
#include<iostream>
#include<queue>
#include<algorithm>
#include<unordered_map>
using namespace std;
int n,m;
int k;
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int mp[110][110];
struct node{int x,y,val;
};
struct node2{int id,val;
}step[1100];
bool cmp(node2 a,node2 b){return a.val<b.val;
}
int bfs(int x,int y){queue<node>q;int vis[110][110]={0};q.push({x,y,0});while(!q.empty()){node t=q.front();q.pop();if(mp[t.x][t.y]==2) return t.val;for(int i=0;i<4;i++){int nx=t.x+dir[i][0];int ny=t.y+dir[i][1];if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&mp[nx][ny]!=0&&vis[nx][ny]==0){vis[nx][ny]==1;q.push({nx,ny,t.val+1});}}}return 0;
}
int main(){cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>mp[i][j];}}cin>>k;unordered_map<int,int>cnt;for(int i=1;i<=k;i++){int x,y;cin>>y>>x;step[i].val=bfs(x,y);step[i].id=i;cnt[step[i].val]++;}sort(step+1,step+1+k,cmp);for(int i=1;i<=k;i++){if(cnt[step[i].val]==1&&step[i].val>0){cout<<step[i].id<<' '<<step[i].val;return 0;}}cout<<"No winner."<<endl;
}
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2978606.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用

前言 Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方法执行耗时&#xff0c;类…

Redis入门到通关之Redis实现Session共享

文章目录 ☃️前期概要☃️基于Session实现登录方案☃️现有方案存在的问题☃️Redis代替Session的业务流程❄️❄️设计key的结构❄️❄️设计key的具体细节❄️❄️整体访问流程 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博…

redis原理篇(黑马程序员虎哥 )回忆笔记

原理&#xff0c;老师讲的真好。相见恨晚。 以下内容是按视频课程的章节安排&#xff0c;在我自己听完课之后&#xff0c;凭借记忆总结的。&#xff08;可能存在疏漏不足&#xff0c;后期补全和修正&#xff0c;同时也在这个过程巩固我自己的对于这个组件相关原理的学习&#x…

中国DIVI版,wordpress DIVI网站主题在国内的替代方案。

最受欢迎的WordPress主题之一是Divi。我们创建了这个全面的Divi主题评论&#xff0c;以帮助您更好地了解其优点和潜在缺点。 Divi主题是什么&#xff1f; Divi是一个流行的WordPress主题&#xff0c;提供了一个网站建设平台。它有一个可视化编辑器选项&#xff0c;为新手和专业…

手撕红黑树(map和set底层结构)(2)

[TOC]红黑树 一 红黑树概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路径会比其他路径长出俩倍&…

选择ERP系统需要考虑哪些因素 企业ERP系统选型指南

ERP系统是一个复杂的软件系统&#xff0c;中小企业要建成ERP系统首先是要选择一个适合自己的ERP软件。目前市场上的ERP软件品种繁多&#xff0c;功能各异&#xff0c;那么中小企业应如何结合自己的实际情况“量体裁衣”找到最适合自己的ERP软件呢?这是目前中小企业进行ERP选型…

介绍-响应式编程-001

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace 开篇&am…

Ultralytics YOLOv8 英伟达™ Jetson®处理器部署

系列文章目录 前言 本综合指南提供了在英伟达 Jetson设备上部署Ultralytics YOLOv8 的详细攻略。此外&#xff0c;它还展示了性能基准&#xff0c;以证明YOLOv8 在这些小巧而功能强大的设备上的性能。 备注 本指南使用Seeed Studio reComputer J4012进行测试&#xff0c;它基于…

2024年三支一扶报名照上传要求很严格

2024年三支一扶报名照上传要求很严格

Unity 使用GPU计算物体距离

在游戏开发中&#xff0c;计算物体之间的距离是一个常见的需求&#xff0c;例如用于碰撞检测、视觉效果等。传统的计算方法可能会在大量物体时带来性能问题&#xff0c;而在 Unity 中&#xff0c;借助 GPU 进行计算可以有效提高性能。本文将介绍一种使用 Compute Shader 在 Uni…

windows安装nc命令的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

C++ | Leetcode C++题解之第40题组合总和II

题目&#xff1a; 题解&#xff1a; class Solution { private:vector<pair<int, int>> freq;vector<vector<int>> ans;vector<int> sequence;public:void dfs(int pos, int rest) {if (rest 0) {ans.push_back(sequence);return;}if (pos fr…

找回删除的视频,3个神奇小妙招!

“作为一名业余摄影师&#xff0c;我保存了很多重要的视频文件在电脑上&#xff0c;但刚刚电脑突然没电关机&#xff0c;开机后我发现很多视频莫名消失了。有什么方法可以找回这些丢失的视频吗&#xff1f;” 在数字化时代&#xff0c;视频文件往往承载着我们生活中的重要回忆。…

Windows 安全中心:页面不可用 你的 IT 管理员已限制对此应用的某些区域的访问,并且你尝试访问的项目不可用。有关详细信息,请与 IT 支持人员联系。

问题 1&#xff1a;Windows 安全中心提示&#xff1a;【页面不可用 你的 IT 管理员已限制对此应用的某些区域的访问&#xff0c;并且你尝试访问的项目不可用。有关详细信息&#xff0c;请与 IT 支持人员联系。】 修复 Microsoft.SecHealthUI 方法 1&#xff1a;命令自动重装安…

【C语言】数据的存储_数据类型:浮点型存储

常见的浮点数&#xff1a; 3.1415926 1E10 浮点型包括&#xff1a;float、double、long double类型 浮点数表示的范围&#xff1a;float.h中定义 浮点数存储规则&#xff1a; 第二个n和*pFloat在内存中明明是同一个数&#xff0c;但浮点数和整数解读结果差别很大。 要理解这…

Web入门-Tomcat

黑马程序员JavaWeb开发教程 文章目录 一、简介1、Web服务器2、Tomcat 二、基本使用三、入门程序解析 一、简介 1、Web服务器 对HTTP协议操作进行封装&#xff0c;简化web程序开发部署Web项目&#xff0c;对外提供网上信息浏览服务 2、Tomcat 概念&#xff1a;Tomcat是Apach…

Gitea 简单介绍、用法以及使用注意事项!

Gitea 是一个轻量级的代码托管解决方案&#xff0c;它提供了一个简单而强大的平台&#xff0c;用于托管和协作开发项目。基于 Go 语言编写&#xff0c;与 GitLab 和 GitHub Enterprise 类似&#xff0c;但专为自托管而设计。以下是对 Gitea 的详细介绍&#xff0c;包括常用命令…

TI API ,详情见ti.com

TI API &#xff0c;详情见ti.com TI API 接口开发&#xff0c;实现货品查询、查询订单、自动下单、抢购等功能。

掌握C++17的“武器“:Boost库带来的新特性

C 17如何受益于Boost库 一、简介二、搜索算法三、文件系统库&#xff1a;filesystem四、特殊数学函数&#xff1a;clamp、gcd等五、模板增强&#xff1a;and、or、not六、C 20概览七、总结 一、简介 在上一篇文章中关于介绍了几个特性&#xff1a;std::optional、std::variant…

Unity3d的海盗王地图

一直以来&#xff0c;都想将海盗王的地图搬到手游unity3d上面。 经过漫长时间的研究&#xff0c;终于实现了当初的想法。