题目链接:点这里~

题目大意

求从点(1,1)走到点(r,c)的最少花费。

操作是向左走花费a[x-1][y],向右走花费a[x][y],向下走花费b[x][y],向上走,花费是向上走的步数+1。

思路

比赛的时候先是从(1,1)开始跑dfs但是肯定T呀,然后是从(1,1)开始跑bfs但还是T了4个点,最后居然是跑一个优先队列,dist表示从(1,1)走到本地的最小花费,每次优先队列弹出dist最小的更新其他点,跑到终点(r,c)就可以跳出。

ac代码

#include<bits/stdc++.h>
using namespace std;
int a[505][505], b[505][505], dp[505][505];
const int inf = 0x3f3f3f3f;
int r, c;
struct node{int x, y, dist;bool operator < (const node &a)const{return a.dist < dist; //使得优先队列是小顶堆}
};
void bfs(int x, int y){priority_queue<node> q;q.push({x, y});while(q.size()){x = q.top().x, y = q.top().y;q.pop();if(x == r && y == c) break; //跑到终点就退出if(y + 1 <= c && dp[x][y] + a[x][y] < dp[x][y + 1]){ //往右走,更新右边dp[x][y + 1] = dp[x][y] + a[x][y];q.push({x,y+1, dp[x][y+1]});}if(y - 1 >= 1 && dp[x][y] + a[x][y - 1] < dp[x][y - 1]){ //往左走,更新左边dp[x][y - 1] = dp[x][y] + a[x][y - 1];q.push({x,y-1,dp[x][y-1]});}if(x+1 <= r && dp[x][y] + b[x][y] < dp[x+1][y]){ //往下走,更新下边dp[x+1][y] = dp[x][y] + b[x][y];  q.push({x+1,y,dp[x+1][y]});}for(int i = 1; i < x; i ++){ //往上走,更新上边if(dp[x][y] + x - i + 1 < dp[i][y]){dp[i][y] = dp[x][y] + x - i + 1;q.push({i, y,dp[i][y]});}}}
}
int main(){cin >> r >> c;for(int i = 1; i <= r; i ++){for(int j = 1; j < c; j ++){cin >> a[i][j];}}for(int i = 1; i < r; i ++){for(int j = 1; j <= c; j ++){cin >> b[i][j];}}//初始化memset(dp, inf, sizeof(dp));dp[1][1] = 0;bfs(1, 1);cout << dp[r][c] << endl;return 0;
}

zone2021 E-Sneaking相关推荐

  1. [AT ZONe2021]Sneaking

    Sneaking 题解 最短路板子 首先,我们可以考虑给它暴力建图来找最短路,但由于向上走的话,每个在它上面的点都可以被走到 ,所以我们的边数可能会达到n4n^4n4级别,明显是不行的. 于是,我们得 ...

  2. ZONe Sneaking 优化建图 + 最短路

    传送门 题目描述 分析 因为每次移动的权值不一样,所以肯定不能用BFSBFSBFS求解,不然就是类似于spfaspfaspfa的写法,容易被卡,所以我们可以去暴力建图然后跑堆优化的dij 怎么建图呢, ...

  3. ZONe Energy Programming Contest E - Sneaking (最短路)

    传送门 前三个移动按照题目描述连边就可以. 现在考虑最后一个移动:如果直接连边,边的总数肯定就炸了.我们可以考虑建一个虚顶点,普通顶点的编号为(i - 1) * m + j,对应虚节点的编号为(i - ...

  4. Example of how to use both JDK 7 and JDK 8 in one build.--reference

    JDK 8 Released Most of us won't be able to use/deploy JDK 8 in production for a looong time. But tha ...

  5. skysat重访周期_重访小恶梦

    skysat重访周期 You awaken with a start, the nightmare still fogging your mind with terror. Rain falls th ...

  6. silklabo哪个公众号有资源_微小说免费渣渣团资源公众号看大全集

    "免费小说全本"公众号.小说免费阅读吧|免费小说在线阅读网|免费小说资源|小说传送站|小说免费公众号推荐|免费小说全集书城推荐|免费小说公众号渣渣团|小说免费阅读叶辰萧初然|霸道总 ...

  7. AtCoder ZONe Energy Programming Contest 题解

    文章目录 A - UFO Invasion B - Sign of Friendship C - MAD TEAM D - Message from Aliens E - Sneaking F - E ...

  8. 黑客马拉松 招募_我如何赢得第一次黑客马拉松-研究,设计和编码的2个狂野日子

    黑客马拉松 招募 I had no coding or engineering background. I studied biology in college, with no clue about ...

  9. mcu比较器技巧和诀窍_如何准备技术面试-技巧和窍门,以帮助您表现最好

    mcu比较器技巧和诀窍 Ah, the coding interview. 嗯,编码面试. "Dread it. Run from it. Destiny arrives all the s ...

最新文章

  1. C# 中字符串string和字节数组byte[]的转换,16 进制字符串转 int的方法
  2. mysql acer_Acer电脑【no bootable device】引导修复
  3. “猜画小歌”的一些细节和思考
  4. python3的socket_python2 与 python3 socket编程的一点小区别
  5. Visual Tracking:运行ECO模型的GPU版本
  6. 【CSS3】自定义滚动条样式 -webkit-scrollbar
  7. 延迟分析中的案例研究:锁定与同步
  8. java excel odbc_Java:无法使用JDBC ODBC更新Excel
  9. 那些弯道超车的应届生,都是这样走捷径的!
  10. delphi mysql 加密_Delphi对Access文件加密
  11. pycharm忽略whitespace警告
  12. python批量转换数据类型_玩转python 各种数据类型的转换
  13. java中的值传递与引用传递
  14. [Icehouse][cinder] volume状态为 error_deleting无法删除 的解决方案
  15. 8081端口导致React Native启动失败
  16. Android studio真机运行失败,提示“软件包似乎无效” “应用程序安装异常(-15)”
  17. mac制作ubuntu 18.04 U盘启动盘
  18. 资管过程日报指标异常分析
  19. 灰度图片及彩色图片像素点统计及显示
  20. pyside2安装后打开designer.exe文件提示丢失 MSVCP140.dll的处理方法

热门文章

  1. 姓名转拼音的几种格式
  2. 以下是一段歌词,请从这段歌词中统计出朋友出现的次数
  3. 强大的达梦数据库图形界面工具
  4. strstr函数和strtok函数的使用
  5. GitHub 狂飙 30K+star 面试现场, 专为程序员面试打造, 现已开源可下载
  6. 硬盘开盘数据恢复成功,笔记本硬盘开机无法识别到硬盘
  7. 微信昵称乱码 mysql_微信昵称乱码及mysql编码格式设立(utf8mb4)_mysql
  8. steam服务器维护6月28,绝地求生6月28日更新到几点 吃鸡更新维护公告
  9. 群晖使用Linux命令,群晖216++常用命令及dokcer使用笔记「持续更新」
  10. MS计算轨迹的分子间作用能