hdu - 2851 Lode Runner (最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=2851
首先有n层,每层的路径都有一个起点和终点和对应的危险值,如果某两层之间有交集,就能从这一层上到另外一层,不过只能上不能下.
给定m个目标点求出到目标点的最小危险值.
因为权值不一样,所以不能用bfs,dijkstra就好。
建图 就是把所有相连的边处理出来,因为读入是对y排序的.然后以此dijkstra就能求出所有点的最小花费。
1 #include <cstdio> 2 #include <cstring> 3 #include <vector> 4 #include <queue> 5 using namespace std; 6 const int maxn = 2010; 7 const int INF = 1<<30; 8 int n,m; 9 struct node 10 { 11 int x,y,cost; 12 }f[maxn]; 13 14 struct edge 15 { 16 int to,cost; 17 edge(){} 18 edge(int x,int y) { 19 to=x; 20 cost=y; 21 } 22 }; 23 typedef pair<int,int>P; 24 vector<edge>G[maxn]; 25 int d[maxn]; 26 void dijkstra(int s) 27 { 28 priority_queue<P,vector<P>,greater<P> >que; 29 for(int i=1;i<=maxn;i++) d[i]=INF; 30 d[s]=f[1].cost; 31 que.push(P(f[1].cost,s)); 32 33 while(!que.empty()) 34 { 35 P p=que.top();que.pop(); 36 int v=p.second; 37 if(d[v]<p.first) continue; 38 for(int i=0;i<G[v].size();i++) 39 { 40 edge e=G[v][i]; 41 if(d[e.to]>d[v]+e.cost) 42 { 43 d[e.to]=d[v]+e.cost; 44 que.push(P(d[e.to],e.to)); 45 } 46 } 47 } 48 } 49 50 int main() 51 { 52 //freopen("a.txt","r",stdin); 53 int t,k; 54 scanf("%d",&t); 55 while(t--) 56 { 57 scanf("%d%d",&n,&m); 58 for(int i=1;i<=n;i++) 59 { 60 G[i].clear(); 61 scanf("%d%d%d",&f[i].x,&f[i].y,&f[i].cost); 62 } 63 //printf("%d\n",n); 64 for(int i=1;i<=n;i++) 65 { 66 for(int j=i+1;j<=n;j++) 67 if(f[j].x<=f[i].y) 68 { 69 G[i].push_back(edge(j,f[j].cost)); 70 // printf("%d %d %d\n",i,j,p[i].cost+p[j].cost); 71 } 72 } 73 dijkstra(1); 74 for(int i=0;i<m;i++) 75 { 76 scanf("%d",&k); 77 if(d[k]==INF) printf("-1\n"); 78 else 79 printf("%d\n",d[k]); 80 } 81 } 82 return 0; 83 }
转载于:https://www.cnblogs.com/nowandforever/p/4549349.html
hdu - 2851 Lode Runner (最短路)相关推荐
- hdu - 2851 - Lode Runner(Dijkstra)
题意:输入测试组数C,输入N(N条路)和M(M个目标),接着输入N条路的起始横坐标S[i]与终止横坐标E[i],还有这条路的危险值W[i],这些路已按E从小到大排了序.接着输入M个目标路,输出走到相应 ...
- hdu 2851 Lode Runner
下午看virtual contest有比赛,我就随便找了个,做的是09年的多校联合训练的题. 一看就是最短路啊,脑子一抽,开始写,写完发现题意理解错了T T...笨蛋... 这个是,每条路给了横坐标, ...
- HDU 2851 Lode Runner(简单DP)
比较简单的一道DP题,题意是给你n条路,每条路的最右边有一个梯子,也就是说只要一条路的最右边在另一条路上,那么就可以从这条路去那条路. 一开始没考虑清楚状态怎么表示,TLE了一次. 因为路的最右边从小 ...
- 【HDOJ】2851 Lode Runner
开始没理解题意.原来destinations是指路的序号.而不是点.DP. 1 #include <stdio.h> 2 #include <string.h> 3 4 int ...
- HDU 6071 Lazy Running (最短路)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6071 题解 又是一道虐信心的智商题... 首先有一个辅助问题,这道题转化了一波之后就会化成这个问题: ...
- hdu 5521 Meeting(最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5521 题意:有1-n共n个点,给出m个块(完全图),并知道块内各点之间互相到达花费时间均为ti.已知两 ...
- hdu 6026 Deleting Edges(最短路计数)
题目链接:hdu 6026 Deleting Edges 题意: 给你n个点,和一个邻接矩阵,非0表示有边,0表示没边. 现在让你删一些边,构成一棵树,使得每个点到0这个点的距离为没删边之前的最短路. ...
- HDU 3339 In Action 最短路+01背包
题目链接: 题目 In Action Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU Victor and World (最短路+状态压缩)
题目链接:传送门 题意: n个城市m条路.刚開始在点1,求把每一个城市都遍历一边最后回到1的花费的最小值. 分析: 我们首先须要预处理出随意两个国家之间的最短距离.由于数据范围非常小,所以直接用Flo ...
最新文章
- miui12 android版本,miui12基于安卓几版本开发的?miui12是安卓11吗
- 泛化,关联,聚合,合成,依赖的关系
- MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法
- CSP认证201609-4	交通规划[C++题解]:最短路径树、dijkstra求单源最短路、递推思想
- EMF+GEF的属性页问题
- 抖音店播 就是我们说的商家自播品牌自播
- 兽用体温计行业调研报告 - 市场现状分析与发展前景预测
- [转载] 利用python对csv文件进行简单的数据分析
- Alfred 4 for Mac(应用快速启动器)
- oracle硬解析和软解析
- Problem D: 平面划分
- svm分类器_用人话讲明白支持向量机SVM(上)
- TCP 协议报文格式
- Juniper交换机配置命令_学习笔记
- 海思3516A 运行mp4box工具,移植gpac 0.4.0
- 【编译汇编链接】COFF文件及结构说明
- OSChina 周日乱弹 —— 这二叉树长得,标致!
- pytorch —— 正则化之weight_decay
- DQ77KB升级bios和AMT设置
- Android游戏引擎汇总,架构师花费近一年时间整理出来的安卓核心知识
热门文章
- 打卡第一天 704. 二分查找、27. 移除元素
- 智慧银行数据解决方案:人工智能如何助力银行更智慧?
- 取消https的ssl验证
- Java 保留小数位时整数位0丢失问题
- 小米AI实验室最新研究论文收录于COLING 2022,介绍一种更有效的鲁棒性神经机器翻译训练方法...
- GIS开发扫盲贴--地理坐标系
- 滑模变结构控制高超声速飞行器(源代码)
- Silicon Lab Ember Zigbee学习杂谈------zcl extension
- 四句话解决const赋值问题
- android旅游app动态的,Android平台深秋出游必备APP推荐