当前位置: 首页 > news >正文

晴天小猪历险记之Hill---Dijkstra算法

Problem A. 晴天小猪历险记之Hill

时间限制 1000 ms
内存限制 128 MB

题目描述

  这一天,他来到了一座深山的山脚下,因为只有这座深山中的一位隐者才知道这种药草的所在。但是上山的路错综复杂,由于小小猪的病情,晴天小猪想找一条需时最少的路到达山顶,但现在它一头雾水,所以向你求助。
山用一个三角形表示,从山顶依次向下有1段、2段、3段等山路,每一段用一个数字T(1< =T< =100)表示,代表晴天小猪在这一段山路上需要爬的时间,每一次它都可以朝左、右、左上、右上四个方向走(注意:在任意一层的第一段也可以走到本层的最后一段或上一层的最后一段)。
晴天小猪从山的左下角出发,目的地为山顶,即隐者的小屋。

输入数据

  第一行有一个数n(2<n<1000) ,n 表示山的高度。
从第二行至第 n+1 行,第 i+1 行有 i 个数,每个数表示晴天小猪在这一段山路上需要爬的时间。

输出数据

  一个数,即晴天小猪所需要的最短时间。

样例输入
5
1
2 3
4 5 6
10 1 7 8
1 1 4 5 6
样例输出
10

感觉题目不是很完善,测试样例里应该包含了 每一层的最后一段能到达第一段或者上一层的第一段

代码:

#include <bits/stdc++.h>
using namespace std;using pii=pair<int,int>;
using ll=long long;
const int INF=1e9;struct Node
{int r,c;int d;bool operator<(Node const& other)const{return d>other.d;//for min-heap}
};int main()
{int n;cin>>n;vector<vector<int>> T(n+1);for(int r=1;r<=n;r++){T[r].resize(r+1);for(int c=1;c<=r;c++){cin>>T[r][c];}}vector<vector<int>>dist(n+1);for(int r=1;r<=n;r++){dist[r].assign(r+1,INF);//r+1长度,填充inf值}dist[n][1]=T[n][1];priority_queue<Node>pq;pq.push({n,1,dist[n][1]});//松弛操作auto relax = [&](int r, int c, int nd){if (r < 1 || r > n) return;if (c < 1 || c > r) return;if (nd < dist[r][c]) {dist[r][c] = nd;pq.push({r, c, nd});}};while(!pq.empty()){Node cur=pq.top();pq.pop();int r=cur.r;int c=cur.c;int d=cur.d;if(d!=dist[r][c]){continue;}if(r==1&&c==1){break;}//左if(c==1){relax(r,r,d+T[r][r]);}else{relax(r,c-1,d+T[r][c-1]);}//右if(c<r){relax(r,c+1,d+T[r][c+1]);}else relax(r, 1, d + T[r][1]);//左上if(r>1){if(c==1){relax(r-1,r-1,d+T[r-1][r-1]);}else{relax(r-1,c-1,d+T[r-1][c-1]);}}//右上if(r>1){if(c<r){relax(r-1,c,d+T[r-1][c]);}else{relax(r-1,1,d+T[r-1][1]);}}}cout<<dist[1][1]<<"\n";}

http://www.dtcms.com/a/556932.html

相关文章:

  • 【pdf-rs】color.rs 文件解析
  • 网站后台的功能手机触屏网站开发
  • 盐城建设网站国外优秀购物网站设计
  • ARP 欺骗深度解析:从原理到防御的全方位拆解
  • 7-1 最大子列和问题
  • day23_密码加密 前端验证码 监听器 svn版本控制
  • 做的网站不能放视频播放器wordpress清空数据
  • 【Microsoft Learn】Microsoft Azure 服务
  • MacCalendar:专为 Mac 用户打造的高效日历工具
  • 第10章:中断处理-6:Implementing a Handler
  • 伊利网站建设评价多少钱?
  • Spring集成Mybatis-Plus(适用于非Springboot项目)
  • 做网站需要服务器么wordpress弹幕播放器
  • uni-app 请求封装
  • Less-7 GET-Dump into outfile-String
  • Windows系统暂停强制更新的操作(超详细说明)
  • Leetcode 43
  • 力扣每日一题——接雨水
  • 基于AWS Lambda事件驱动架构与S3智能生命周期管理的制造数据自动化处理方案
  • 营商环境建设网站建设公司网站的必要性
  • 小网站广告投放网站做支付需要准备什么东西吗
  • 第六届“大湾区杯”粤港澳金融数学建模竞赛赛题浅析-助攻快速选题
  • 【车载Android】使用自定义插件实现多语言自动化适配
  • 学习网站建设要什么学历网站颜色表
  • C++ 分治 归并排序解决问题 力扣 315. 计算右侧小于当前元素的个数 题解 每日一题
  • Linux UdpSocket的应用
  • docker compose 创建MySQL8后在容器里备份数据到宿主机(.sql文件)的方式
  • 南昌网站外包几何图形生成网站
  • 《算法通关指南:数据结构和算法篇 --- 顺序表相关算法题》--- 询问学号,寄包柜,合并两个有序数组
  • OS_3 Memory、4 File、5 IO