首页 > TAG信息列表 > P1462

P1462 通往奥格瑞玛的道路

原题链接 考察:最短路+二分 思路:         二分最多的一次收取的费用的最小值,对于每一个二分值跑一遍最短路,最后判断n点是否可达即可.这里的check函数的思路类似二分经典题:搬石头         long long数组的极大值可以初始化为memset(数组,63,size) 1 #include <iostre

luogu P1462 通往奥格瑞玛的道路 二分+spfa

#include<iostream> #include<cstdio> #include<queue> #include<cstring> #include<vector> #include<algorithm> using namespace std; const int N=50000*2; const int mod=100000000; int n,m,b; int e[N],ne[N],idx,h[N],w[N]; int

P1462 通往奥格瑞玛的道路

题意:给出一个图,让我们从1走到n;   每一条边有一个权值(伤害值),每一个顶点也有一个权值(收费值);   从1走到n的某路径的答案为,这些路径中的最大值; 假如生命耗尽,也无法走到终点,   现在让我们找出这样一条路径,求最小的花费值; 思路:我们通过二分便可以解决;    二分对象为花费值,然

洛谷P1462 通往奥格瑞玛的道路 二分答案,dijkstra求最短路,堆优化

将每个城市的所需过路费放在答案数组中,排序,找到起点与终点最大过路费的位置,作为二分的左界,所有城市中最大的过路费作为二分的右界。每次选一个上限花费,高于这个消费的城市就不能选择,dijkstra找耗血最少的路线即最短路,看以这个花费作为上限花费,能不能血量高于0走到终点,如果能

luogu#P1462 通往奥格瑞玛的道路

题意: 给出一张有 \(n\) 个点, \(m\) 条边的无向图 每个点上有一个点权 \(f[i]\) ,表示经过这个点需要交 \(f[i]\) 的费用。,每条边上有一个边权 \(C[i]\) ,表示经过这条边需要扣除 \(C[i]\) 的血量 求能从起点 \(1\) 到达 \(n\) 的情况下交费最多一次的最小值 解法: 先判断一次假设血量

P1462-通往奥格瑞玛的道路

1 #include <bits/stdc++.h> 2 #define pb push_back 3 #define _for(i,a,b) for(int i = (a);i < (b);i ++) 4 #define INF 1000000003 5 #define ll long long 6 7 using namespace std; 8 9 const int maxn = 50003; 10 inline ll read() 11 { 12