洛谷 P1462 通往奥格瑞玛的道路

这篇具有很好参考价值的文章主要介绍了洛谷 P1462 通往奥格瑞玛的道路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目连接

分析

注意到很明显的单调性,所以可以使用二分来求解。

接下来我们把城市看成点,公路看成边,把扣血量看成边权,那么从点 1 1 1 开始跑一遍最短路,如果点 1 1 1 到点 n n n 的距离(最少扣血量)超过了限制,则不可行,注意不能走到交钱数大于二分限制 x x x 的点。

注意如果走到了点 n n n,且血量等于 0 0 0,则也是合法方案。文章来源地址https://www.toymoban.com/news/detail-776000.html

代码

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 3 * 1e4 + 5;
int n, m, b, money[N], vis[N], dist[N];

struct node{
  int to, w;
};

vector <node> nbr[N];

bool sqfa(int x){
	if(money[1] > x){
		return false;
	}
	memset(dist, 0x3f, sizeof dist);
	memset(vis, 0, sizeof vis);
  queue <int> q;
  dist[1] = 0, vis[1] = true, q.push(1);
  while(!q.empty()){
    int cur = q.front();
    q.pop();
    vis[cur] = false;
    for(int i = 0; i < nbr[cur].size(); i ++){
      int nxt = nbr[cur][i].to, w = nbr[cur][i].w;
      if(money[nxt] > x){
      	continue;
			}
      if(dist[nxt] > dist[cur] + w){
        dist[nxt] = dist[cur] + w;
        if(!vis[nxt]){
          vis[nxt] = true;
          q.push(nxt);
        }
      }
    }
  }
  return dist[n] < b;
}

signed main(){
    cin >> n >> m >> b;
    for(int i = 1; i <= n; i ++){
  	    cin >> money[i];
	}
	for(int i = 1; i <= m; i ++){
		int a, b, c;
		cin >> a >> b >> c;
		nbr[a].push_back((node){b, c});
		nbr[b].push_back((node){a, c});
	}
	int l = -1, r = 1e9 + 1;
	while(l + 1 < r){
		int mid = (l + r) / 2;
		if(sqfa(mid)){
			r = mid;
		}else{
			l = mid;
		}
	}
	if(!sqfa(r)){
		cout << "AFK";
	}else{
		cout << r;
	}
} 

到了这里,关于洛谷 P1462 通往奥格瑞玛的道路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【图论经典题目讲解】洛谷 P5304 旅行者

    D e s c r i p t i o n mathrm{Description} Description 给定一个 n n n 个点, m m m 条边的有向图,求解 k k k 个点两两间最短路长度的最小值。 S o l u t i o n mathrm{Solution} Solution 对于 k k k 个点,可以考虑二进制分组优化,即对于每一位为 1 1 1 的点放入 1 1 1 组(设为 A A A 组),为 0 0 0 的点

    2024年02月19日
    浏览(33)
  • 【图论经典题目讲解】洛谷 P2371 墨墨的等式

    D e s c r i p t i o n mathrm{Description} Description 求解有多少个 b ∈ [ l , r ] bin [l,r] b ∈ [ l , r ] 满足 ∑ i = 1 n a i x i = b sumlimits_{i=1}^n a_ix_i=b i = 1 ∑ n ​ a i ​ x i ​ = b 存在非负整数解( x i x_i x i ​ 为变量, a a a 数组给定)。 S o l u t i o n mathrm{Solution} Solution b b b 一定可以表示为

    2024年02月20日
    浏览(28)
  • 【图论经典题目讲解】洛谷 P2149 Elaxia的路线

    D e s c r i p t i o n mathrm{Description} Description 给定 n n n 个点, m m m 条边的无向图,求 2 2 2 个点对间最短路的最长公共路径 S o l u t i o n mathrm{Solution} Solution 最短路有可能不唯一,所以公共路径的长度就有可能不同。 将 2 2 2 条最短路都会经过的边(包括同向和异向)记录出来,

    2024年02月20日
    浏览(31)
  • 道路匹配MapMatching:HMM模型、维特比算法Viterbi、道路匹配基本算法ST、STD、IVVM算法介绍

    我曾经做过有关 道路匹配(MapMatching) 的相关研究,学习过几个重要的道路匹配算法,我将先对 重要的匹配模型:隐马尔科夫模型(HMM) 进行介绍,再介绍 维特比算法Viterbi ,最后对 ST、STD、IVMM 三种算法做一个简单的介绍,供大家参考。 隐马尔科夫模型(Hidden Markov Model,简

    2024年02月06日
    浏览(25)
  • Matlab遗传算法道路图像阈值分割(附上完整源码)

    图像阈值分割是图像处理中常用的一种方法,用于将图像分割为不同的区域。本文介绍了遗传算法在道路图像阈值分割中的应用。首先,对图像进行预处理,包括图像的灰度化和噪声去除。然后,通过遗传算法优化阈值的选择,以得到最佳的分割结果。实验结果表明,遗传算

    2024年02月12日
    浏览(26)
  • leetcode-1462. Course Schedule IV

    There are a total of numCourses courses you have to take, labeled from 0 to numCourses - 1. You are given an array prerequisites where prerequisites[i] = [ai, bi] indicates that you must take course ai first if you want to take course bi. For example, the pair [0, 1] indicates that you have to take course 0 before you can take course 1. Prerequisites can als

    2024年02月01日
    浏览(21)
  • 【图像分割】卫星遥感影像道路分割:D-LinkNet算法解读

    因为毕设中的部分内容涉及到卫星遥感影像道路分割,因此去对相关算法做了一些调研。 本文所使用数据集为DeepGlobe,来自于CVPR2018年的一个挑战赛:DeepGlobe Road Extraction Challenge。 D-LinkNet为该挑战赛的冠军算法。 考虑到D-LinkNet开发版本较老(Python 2.7、Pytorch 0.2.0),我对此项目

    2024年02月16日
    浏览(33)
  • 洛谷题单【算法1-3】暴力枚举 P1157

            最近有很多自己想做的事情,但猛地发现自己似乎并没有将课内的课程知识学好,个人规划与学习安排之间似乎出现了不可忽视的冲突,于是上一周自己在无所事事中迷茫地摆了一周。打算从这周开始改变,就从每天坚持发帖子记录自己做题经验开始吧。 题目:

    2024年04月17日
    浏览(37)
  • 洛谷题单算法1-1模拟与高精度

    发文章只是为了督促自己做题,双非大二刚转科班的菜菜一枚,代码仅供参考,不足之处望理解。         这题太恶心了,看完题解发现三种情况没有考虑,后来给补上了,我的 if-else 思路可能写的不太好,但是能过         注意结构体在函数中的传参(下学期c语言II要好

    2024年02月19日
    浏览(32)
  • 洛谷题单--算法[2-1] 前缀和、差分与离散化

    目录 0.铺垫学习:p1115最大子段和--前缀和+贪心+DP 1.p1719最大加权矩形--前缀和+贪心+DP+矩阵压缩 原题链接: P1115 最大子段和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 原题: 题目描述 给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。 输入格式 第

    2024年02月22日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包