【洛谷习题】通往奥格瑞玛的道路
题目的描述就很有意思,可以顺便去了解一下魔兽的背景故事。学习使我们快乐!
题目链接:https://www.luogu.org/problemnew/show/P1462
大清早上起来A掉一道题,好兴奋。看到题目要求收费最多的一次的最小值,想到用二分答案,二分这个最小值,然后去跑最短路,看是否可以,再不断更新区间,使这个值尽量小。几乎没有什么难点,但需要注意的细节有几个。估计答案的最大值应为收费最多的城市所收的费用;检验时,我是采用若发现某个结点的收费比当前所验证的答案大,则不再扩展,最后通过检查是否存在最短路,最短路是否可以回到奥格瑞玛,但问题是,如果终点不符合要求,同样会存在最短路,最短路可能也可以回到奥格瑞玛,所以还需要额外检查终点是否不超过检验的答案。
还有,无向图用邻接表存储时,每条边会存两次!!!
1 #include <cstdio> 2 #include <cstring> 3 #include <queue> 4 5 using namespace std; 6 7 inline int get_num() { 8 int num = 0; 9 char c = getchar(); 10 while (c < '0' || c > '9') c = getchar(); 11 while (c >= '0' && c <= '9') 12 num = num * 10 + c - '0', c = getchar(); 13 return num; 14 } 15 16 const int maxn = 1e4 + 5, maxm = 5e4 + 5, inf = 0x3f3f3f3f; 17 18 int head[maxn], eid; 19 20 struct Edge { 21 int v, w, next; 22 } edge[2 * maxm]; 23 24 inline void insert(int u, int v, int w) { 25 edge[++eid].v = v; 26 edge[eid].w = w; 27 edge[eid].next = head[u]; 28 head[u] = eid; 29 } 30 31 struct node { 32 int id, dist; 33 node(int i, int d) : id(i), dist(d) {} 34 bool operator < (const node& rhs) const { 35 return dist > rhs.dist; 36 } 37 }; 38 39 int n, m, b, f[maxn], dist[maxn], vis[maxn]; 40 41 priority_queue<node> q; 42 43 inline int check(int x) { 44 memset(vis, 0, sizeof(vis)); 45 memset(dist, inf, sizeof(dist)); 46 dist[1] = 0; 47 q.push(node(1, 0)); 48 while (!q.empty()) { 49 int u = q.top().id; 50 q.pop(); 51 if (vis[u]) continue; 52 vis[u] = 1; 53 for (int p = head[u]; p; p = edge[p].next) { 54 int v = edge[p].v, w = edge[p].w; 55 if (f[v] > x) continue; 56 if (dist[v] > dist[u] + w) { 57 dist[v] = dist[u] + w; 58 q.push(node(v, dist[v])); 59 } 60 } 61 } 62 if (dist[n] > b) return 0; 63 else return 1; 64 } 65 66 int main() { 67 n = get_num(), m = get_num(), b = get_num(); 68 int mf = 0; 69 for (int i = 1; i <= n; ++i) { 70 f[i] = get_num(); 71 if (f[i] > mf) mf = f[i]; 72 } 73 for (int i = 1; i <= m; ++i) { 74 int u = get_num(), v = get_num(), w = get_num(); 75 insert(u, v, w); 76 insert(v, u, w); 77 } 78 if (!check(mf)) {printf("AFK"); return 0;} 79 int l = 1, r = mf; 80 while (l < r) { 81 int mid = l + (r - l) / 2; 82 if (check(mid)) r = mid; 83 else l = mid + 1; 84 } 85 printf("%d", l); 86 return 0; 87 }
AC代码
转载于:https://www.cnblogs.com/Mr94Kevin/p/9539894.html
【洛谷习题】通往奥格瑞玛的道路相关推荐
- 洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA
洛谷P1462 通往奥格瑞玛的道路 二分答案+最短路SPFA 二分交费最多的一次的钱数 然后只将符合要求的边加入图中 如果到终点的最短路大于等于血量 或者直接起点不能到达终点 那么说明不符合要求 需要 ...
- 洛谷P1462 通往奥格瑞玛的道路 题解
洛谷P1462 通往奥格瑞玛的道路 题解 题目链接:P1462 通往奥格瑞玛的道路 题意:在艾泽拉斯,有 nnn 个城市.编号为 1,2,3,-,n1,2,3,\ldots,n1,2,3,-,n . ...
- 洛谷 P1462 通往奥格瑞玛的道路 Label: 最小化最大值 spfa (存多条边示例)
题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...
- 洛谷P1462 通往奥格瑞玛的道路
题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量. 有一天他醒来后发现自己居然到了联盟的主城暴风城. 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛. 题目描述 在艾泽 ...
- 洛谷 P1462 通往奥格瑞玛的道路
Description 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 在艾泽拉 ...
- 洛谷 1462 通往奥格瑞玛的道路
题目背景 Background 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛. ...
- [洛谷1462 ]通往奥格瑞玛的道路---二分答案+spfa
题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...
- 洛谷 1462 通往奥格瑞玛的道路 题解
博客观赏效果更佳 题意简述 nnn个点mmm条边的无向图,点边均有权.给定bbb.请你找到一个从1到n的路使得边权和<=b且点权的最大值最小. 思路 二分+最短路.对于一个mid,把所有点权&l ...
- 洛谷1462 通往奥格瑞玛的道路 二分+spfa
题目链接: https://www.luogu.org/problem/show?pid=1462 题意: 题解: 二分法+最短路判定. 二分经过城市的最大费用w,然后判定:对于每一个费用大于w的城市 ...
- 洛谷-P1462-通往奥格瑞玛的道路
题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量. 有一天他醒来后发现自己居然到了联盟的主城暴风城. 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛. 题目描述 在艾泽 ...
最新文章
- linux history记录格式修改
- 使用模板将Web服务的结果转换为标记语言
- 把指定用户的命令写在/home/etc/rc.local中,系统开机时就会自动执行指定用户的命令。
- FZU 1019猫捉老鼠
- 让机器读懂视频:亿级淘宝视频背后的多模态AI算法揭秘
- redux-thunk使用_Redux Thunk用示例解释
- 第12章[12.2] Ext JS可编辑列Grid的全场景开发
- dev.c drv.c bus.c
- js判断字符在另一个字符串中出现次数
- 创建Java源代码文件----开始编写代码
- leetcode:买卖股票最佳时机含手续费
- stm32 火灾自动报警及联动控制源码_火灾自动报警系统设计规范 :联动控制
- android代码签名和混淆打包
- win7桌面背景地址
- MetaPAD: 从大量文本语料库中发现元模式
- 将tensorflow模型转换为uff模型
- 戴老师论文阅读:Two-Timescale Channel Estimation for Reconfigurable Intelligent Surface Aided Wireless...
- SQL中的WHILE循环使用
- 腾讯云从业者资格认证考试模拟题
- python 读取邮件
热门文章
- qt 设置背景图片方法
- php怎么建留言本,php实现留言板功能的详细代码
- (论文笔记)SC4D: A Sparse 4D Convolutional Network for Skeleton-Based Action Recognition
- spydroid-ipcamera-master.zip
- PS新手教程:加深减淡工具使用方法
- 华为写代码的这13年,成为了我最宝贵的人生历程
- 什么是UART中的FIFO ?
- 2022:股票程序化交易实战2022Q1
- early fusion VS later fusion
- 阿里无影云电脑磁盘性能测试