链接: https://www.nowcoder.com/acm/contest/118/A
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

最近,喜爱ACM的PBY同学沉迷吃鸡,无法自拔,于是又来到了熟悉的ERANGEL。经过一番搜寻,PBY同学准备动身前往安全区,但是,地图中埋伏了许多LYB,PBY的枪法很差,希望你能够帮他找到一条路线,每次只能向上、下、左、右移动,尽可能遇到较少的敌人。

输入描述:

题目包含多组测试,请处理到文件结束;
第一行是一个整数n,代表地图的大小;
接下来的n行中,每行包含n个整数a,每个数字a代表当前位置敌人的数量;
1 < n <= 100,1 <= a <= 100,-1代表当前位置,-2代表安全区。

输出描述:

对于每组测试数据,请输出从当前位置到安全区所遇到最少的敌人数量,每个输出占一行。

链接: https://www.nowcoder.com/acm/contest/118/A
来源:牛客网

示例1

输入

5
6 6 0 -2 3
4 2 1 2 1
2 2 8 9 7
8 1 2 1 -1
9 7 2 1 2

输出

9

示例2

输入

5
62 33 18 -2 85
85 73 69 59 83
44 38 84 96 55
-1 11 90 34 50
19 73 45 53 95

输出

173

思路:求从原点到目标点遇见最少的人数,利用BFS,以最短路径的方式,既然要求遇见最少的人数,每次应该是当前位置的周围有最少人数的位置入队,利用优先队列可以实现。

AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int MAXN = 110;
const int INF  = 0x3f3f3f3f;
int mp[MAXN][MAXN];
int n;
int si,sj,ei,ej;
int dp[MAXN][MAXN];
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
typedef pair<int,int> P;
bool used[MAXN][MAXN];
struct node {int x;int y;int val;
};
struct cmp{bool operator () (node f1, node f2) // 重载括号{return f1.val>=f2.val; }
};
priority_queue<node,vector<node>,cmp > que;
void bfs(){int i,j;while(!que.empty()){node a = que.top();que.pop();i=a.x;j=a.y;used[i][j]=true;if(i==ei && j==ej){return ;}for(int k=0;k<4;k++){int di=i+dir[k][0];int dj=j+dir[k][1];if(di>=0 && di<n && dj>=0 && dj<n && used[di][dj]==false){dp[di][dj]=dp[i][j]+mp[di][dj];used[di][dj]=true;que.push((node){di,dj, dp[di][dj]});             }}}
}
void sovle(){while(!que.empty()){que.pop();}for (int i = 0; i <= n; ++i)for (int j = 0; j <= n; ++j) dp[i][j] = INF;memset(used,false,sizeof(used));dp[si][sj]=0;que.push((node){si,sj, 0});used[si][sj]=true;bfs();printf("%d\n",dp[ei][ej]+2);
}
int main(){while(~scanf("%d",&n)){for(int i=0;i<n;i++){for(int j=0;j<n;j++){scanf("%d",&mp[i][j]);if(mp[i][j]==-1){si=i;sj=j;}if(mp[i][j]==-2){ei=i;ej=j;}}}sovle();}return 0;
}

2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛 A题题解相关推荐

  1. 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛题解

    链接:https://www.nowcoder.com/acm/contest/118/A 来源:牛客网 PUBG 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...

  2. 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛 H 程序员的好印象

    题意: 有一个0,1的序列,当你出现1之后就不能在出现0了,问你最长的子序列长度是多少 思路:0 0 0  1 1 1 ,1之后不能出现0了,那其实就是最长上升子序列啊没了... 代码: #inclu ...

  3. 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛题解

    北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛题解 A lzh的蹦床 B 所谓过河 C 旅行家问题1 D 旅行家问题2 E 小菲和Fib数列 F 好玩的音乐游戏 G ranko的手表 H 字母收集 ...

  4. 北京信息科技大学第十二届程序设计竞赛暨ACM选拔赛题解

    A 爱丽丝的人偶(一) 链接:https://ac.nowcoder.com/acm/contest/8755/A 题目描述 爱丽丝有个人偶,每个人偶的身高依次是 现在她要将这个人偶摆成一排. 但是人 ...

  5. 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)题解

    题目链接: 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCP ...

  6. E-游戏机本当下手(北京信息科技大学第十二届程序设计竞赛暨ACM选拔赛)

    游戏机本当下手 题目: 藤原妹红拿到了一个游戏机,游戏机上有'1'和'0'两个按钮. 妹红发现,只要按住某个按钮不放,屏幕上就能一直不断打印那个字符. 比如对于"11111111100000 ...

  7. 北京信息科技大学第十二届程序设计竞赛暨ACM选拔赛(同步赛)

    A .爱丽丝的人偶(一) 链接:https://ac.nowcoder.com/acm/contest/8755/A 来源:牛客网 题目描述 爱丽丝有n个人偶,每个人偶的身高依次是 1,2,3,-n ...

  8. 海淀区第九届单片机竞赛获奖名单_第十二届程序设计竞赛暨ACM选拔赛获奖名单...

    11月21日由北京信息科技大学ACM集训队主办,计算机学院承办,牟永敏老师指导的第十二届程序设计竞赛暨ACM选拔赛完美落幕.本次比赛的参赛队员来自北信科的各个学院的同学共同参与,共142人报名参与此次 ...

  9. 浙江农林大学第二十届程序设计竞赛暨团体程序设计天梯赛选拔赛(同步赛) K.来自良心出题人wzc的简单题

    链接 来源:牛客网 题目描述 罗德岛训练室今天的使用人是干员w,她的任务是使用手上的三个遥控炸弹,尽可能摧毁最大价值的目标. 测试区域是一个nn的矩阵,w可以选择任意格子安放炸弹,如果选择了位置[i] ...

最新文章

  1. Redis Key资源占用情况的可视化分析
  2. php short_open_tag asp_tags
  3. hsrp热备路由协议实验
  4. 本科985末端去哪学计算机好,4所“985高校”,录取分较低,常被拿来捡漏!
  5. 玩转UITableView
  6. java怎么看dao文件_java通过实体类生成dao文件
  7. P1460 健康的荷斯坦奶牛 Healthy Holsteins (简单的dfs)
  8. 每日一题:leetcode82. 删除排序链表中的重复元素 II
  9. 临时关闭七八十家店!茶颜悦色:我们还撑得住
  10. python 运行时间计算_python计算一段代码的运行时间(类和函数)
  11. 天猫精灵 AIoT 平台将研发门槛从1000万降至40万,缩减 3 倍研发周期
  12. Greenplu数据库的部署
  13. vue项目基本环境的配置与初始化
  14. httpclient4.3+jsoup模拟登陆河北移动
  15. html 数字加圆圈,word中圆圈数字,圆圈11怎么打
  16. 汽机电调控制器505E运行操作手册
  17. centos7 定时清理内存
  18. LINUX下浮点运算
  19. Linux resolv.conf 简介
  20. 5G商用牌照正式发放!万亿级市场大门开启

热门文章

  1. TensorHouse仓库介绍
  2. 吴昊品游戏核心算法 Round 17 —— 吴昊教你玩拼图游戏(8 puzzle)
  3. androidX 在AndroidMainfest里面加入provider后编译不通过
  4. java自动生成 rap接口_GitHub - XiaoweiM/rap2-javabean: rap2生成javabean
  5. 英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析
  6. 基于python实现类似qq群聊功能
  7. 给初中级JAVA准备的面试题
  8. android BT 遥控器配置
  9. JavaScript输出语句console.log输出换行代码
  10. 鲸探发布点评:7月21日发售辟邪、唐风汉韵、马首圣银壶数字藏品