题目描述
今天LZY攻城小分队出动了,他们需要在尽可能短的时间内攻占敌人的大本营。战场是一个n * m的二维网格,LZY小分队初始在(0,0)点,敌军大本营在( n -1 ,m - 1)点
每个点上有一个对应的数字代表LZY小分队攻占这个据点需要耗费的时间,现在作为LZY小分队的指挥官,你需要指定一条合适的路线,使LZY小分队能用最短的时间攻占敌人大本营。
输入
测试样例由多组测试数据组成。每组测试数据第一行输入两个正整数n , m ( 1 <= n,m <= 100)
接下来输入n * m 个数字 ,每个数字不超过 500
输出
输出LZY小分队攻占敌人大本营所需要的最短时间
样例输入 Copy
3 3
1 2 3
1 2 3
1 2 3
样例输出 Copy
8

  • 题意从起点到终点的最短路径
  • 用dp和优先队列都可以
#include<bits/stdc++.h>
using namespace std;
int n, m;
int a[105][105];
int v[105][105];
int dir[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};
struct q1{int x, y, ans;
};
struct cmp{bool operator() (q1 &p1, q1 &p2){return p1.ans > p2.ans;}
};
int bfs(){priority_queue<q1,vector<q1>,cmp> p;p.push({1,1,a[1][1]});v[1][1] = 1;while(!p.empty()) {int x = p.top().x;int y = p.top().y;int ans = p.top().ans;if(x == n && y == m)return ans;p.pop();for(int i = 0; i < 4; i ++){int tx = x + dir[i][0];int ty = y + dir[i][1];if(tx < 1 || ty < 1 || tx > n || ty > m)continue;if(v[tx][ty] == 1)continue;v[tx][ty] = 1;p.push({tx,ty,ans + a[tx][ty]});}}
}
int main(){ios::sync_with_stdio(false);while(cin >> n >> m){memset(a,0,sizeof(a));memset(v,0,sizeof(v));for(int i = 1; i <= n; i ++)for(int j = 1; j <= m; j ++)cin >> a[i][j];cout << bfs() << endl;}return 0;
}

攻城掠地(优先队列)相关推荐

  1. 优先队列的应用 C++实现

    优先队列的应用 C++实现 优先队列可以用堆来实现, 堆底层可以用数组表示, 通过索引关系,可以表示成一颗二叉完全树 C++的STL提供了相应的容器适配器 包含在queue头文件中 下面通过一道题来看 ...

  2. ccf 交通规划(迪杰斯特拉优先队列模板)

    什么跟什么就是刘汝佳小白书迪杰斯特拉队列的优先队列法 #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f ...

  3. c++ std::priority_queue优先队列

    template <class T, class Container = vector<T>,class Compare = less<typename Container:: ...

  4. 《程序设计解题策略》——1.6 利用左偏树实现优先队列的合并

    本节书摘来自华章计算机<程序设计解题策略>一书中的第1章,第1.6节,作者:吴永辉 王建德 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.6 利用左偏树实 ...

  5. 排序(一)归并、快排、优先队列等(图文具体解释)

    排序(一) 0基础排序算法 选择排序 思想:首先,找到数组中最小的那个元素.其次,将它和数组的第一个元素交换位置.再次.在剩下的元素中找到最小的元素.将它与数组的第二个元素交换位置. 如此往复,直到将 ...

  6. MYSQL实现ORDER BY LIMIT的方法以及优先队列(堆排序)

    一.MYSQL中的LIMIT和ORACLE中的分页 在MYSQL官方文档中描述limit是在结果集中返回你需要的数据,它可以尽快的返回需要的行而不用管剩下的行, 在ORACLE中也有相关的语法比如 1 ...

  7. 373. Find K Pairs with Smallest Sums (java,优先队列)

    题目: You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. Def ...

  8. 暑期集训4:栈,树,优先队列 例 :  UVA - 514 ​​​​​​​​​​​​​​

    2018学校暑期集训第四天--栈,树,优先队列 例题  --   UVA - 514 Rails There is a famous railway station in PopPush City. ...

  9. pku 1724 ROADS BFS +优先队列

    http://poj.org/problem?id=1724 题意: Bob现在有的钱数为k,他想从城市1到城市n,给出m条连接两个城市的有向边,并且给出路的长度w,和经过这条路要交的钱数c.问Bob ...

最新文章

  1. 牛客网平台常州大学新生寒假训练会试
  2. 案例驱动python编程入门-用Python进行行为驱动开发的入门教程
  3. 关于催收那些事儿(下)
  4. Nginx+keepalived从入门到集群搭建(手把手教学,建议收藏)
  5. wds+mdt 分布式自动部署 操作系统
  6. 2018最佳GAN论文回顾(上)
  7. 175. 组合两个表
  8. 浏览器提取已安装扩展教程
  9. 细说Oracle11g RAC的IP地址
  10. 基于opencv的数字识别
  11. python推箱子小游戏_python写的推箱子小游戏
  12. 谈一谈linux下线程池
  13. 关于对小球相互碰撞处理的研究
  14. 淘宝小程序 表单组件checkbox的默认样式修改
  15. 信息部门人员角色划分及任职资格
  16. JavaScript-function函数
  17. 腾讯云服务器镜像部署 Java Web 环境
  18. python vba excel课程_【Python3+VBA】在Excel中生成小姐姐|python3教程|python入门|python教程...
  19. 安装Oracle RAC数据库前的准备工作
  20. 前端工具sass使用

热门文章

  1. python七段数码管显示学号_python小实例——七段数码管绘制
  2. python爬虫爬取古诗词实例补充讲解之获取注释和译文
  3. 201809-3-元素选择器
  4. 字节跳动,野心十足,十年有可能打败腾讯成为第二个互联网巨头吗?
  5. MATLAB模拟陀螺仪的运动轨迹(附完整代码)
  6. 【Python数据处理篇——DataFrame数据准备】DataFrame的创建、增删改查、数据导入等
  7. Elasticsearch概念
  8. 银河麒麟 kylin server v10上创建虚拟机(基于 鲲鹏920 CPU)
  9. 瑞芯微RK3328芯片怎么样?RK3328处理器参数介绍
  10. pyttsx3设置男性声音