[LuoguP1462]通往奥格瑞玛的道路
题意简述:现在有一个图,每经过一个点就会交钱,走一条路就会扣血。在血量>0的前提下,要从1走到n点,并且要求路径上交钱的最大值最小。
解题思路:首先最大值最小,我们选择二分。目前有两个限制条件,血量与金钱。我们选择二分金钱,因为二分金钱就可以将一部分的城市排除在外,但二分血量不行(扣血是累加的,而金钱只是单个点,所以删点比删边更好了)。那么二分了金钱之后限制了部分城市不能走,二分对应的check就用dijistra,跑一遍可以去的城市中的最短路(路上扣血作为边权),此时我们可以求得扣血最少,再与总血量进行比较,比总血量少就是一个可行解,继续二分看一看是否有更优的答案。 至于没有解则是不对城市进行限制都无法活着回去。
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<fstream>
#include<queue>
using namespace std;
int read(){
int res=,f=;
char ch=getchar();
while(ch<''||ch>''){
if(ch=='-')f=-;
ch=getchar();
}
while(ch>=''&&ch<=''){
res=res*+(ch-'');
ch=getchar();
}
return res*f;
}
const int MAXN=;
int n,m,b,f[MAXN],head[MAXN],ne[MAXN],to[MAXN];
int c[MAXN],tot,money,vis[MAXN],ans;
priority_queue <pair<int,int> > q;
long long d[MAXN];
void add(int x,int y,int u){
to[++tot]=y;
c[tot]=u;
ne[tot]=head[x];
head[x]=tot;
}
bool dijistra(int max_money){
memset(d,/,sizeof(d));
memset(vis,,sizeof(vis));
d[]=;vis[]=;
q.push(make_pair(,));
while(!q.empty()){
int u=q.top().second;
q.pop();
//vis[u]=0;
for(int i=head[u];i;i=ne[i]){
int v=to[i];
if(f[v]>max_money||f[u]>max_money)continue;
if(d[v]>d[u]+c[i]){
d[v]=d[u]+c[i];
if(!vis[v]){
vis[v]=;
q.push(make_pair(-d[v],v));
}
}
}
}
if(d[n]<b)return ;
else return ;
}
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
n=read();m=read();b=read();
int l,r;
for(int i=;i<=n;++i){
f[i]=read();
r=max(f[i],r);
}
l=;
int a,b,c;
for(int i=;i<=m;++i){
a=read();b=read();c=read();
add(a,b,c);
add(b,a,c);
}
if(!dijistra(<<)){
printf("AFK");
return ;
}
r++;
while(l<r){
int mid=(l+r)>>;
if(dijistra(mid)){
r=mid;
}
else {
l=mid+;
}
}
printf("%d",l);
return ;
}
[LuoguP1462]通往奥格瑞玛的道路的更多相关文章
- [LuoguP1462]通往奥格瑞玛的道路($SPFA+$二分)
#\(\mathcal{\color{red}{Description}}\) \(Link\) 有一个图,求其在\(1-N\)的最短路小于一个给定值下,点权最大值的最小值. #\(\mathcal{ ...
- luoguP1462通往奥格瑞玛的道路(二分答案+spfa)
题意 给出n个点m条边的无向图. 每条边有两个权值a,b; 问在保证从1到n的路径a权值和小于x时,路径上b权值最大值最小为多少. (n≤10000,m≤50000,x≤1000000000) 题解 ...
- P1462 通往奥格瑞玛的道路
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...
- P1462 通往奥格瑞玛的道路 (二分+最短路)
题目 P1462 通往奥格瑞玛的道路 给定\(n\)个点\(m\)条边,每个点上都有点权\(f[i]\),每条边上有边权,找一条道路,使边权和小于给定的数\(b\),并使最大点权最小. 解析 二分一下 ...
- 【洛谷】【二分答案+最短路】P1462 通往奥格瑞玛的道路
在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目背景 [题目描述:] 在艾泽 ...
- 洛谷 P1462 通往奥格瑞玛的道路 解题报告
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...
- 最短路【洛谷P1462】 通往奥格瑞玛的道路
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...
- AC日记——通往奥格瑞玛的道路 洛谷 P1462
通往奥格瑞玛的道路 思路: 二分+spfa: 二分最大费用,然后判断只走小于等于二分答案的点是否可以花费小于体力上限的血量: 来,上代码: #include <cstdio> #inclu ...
- 洛谷——P1462 通往奥格瑞玛的道路
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...
随机推荐
- day39——SQL语句简单介绍、库、表、记录、安装mysql简单命令
day39 SQL语句简单介绍 库(增删改查) 查看数据库 show databases; 查看其中一个库 show create database db1; 创建数据库 create databas ...
- Linux安装centos
在虚拟机上安装centos 虚拟机使用win10自带的hyper-v非常好用 centos下载地址http://mirrors.aliyun.com/centos/7.6.1810/isos/x86_ ...
- zookerper入门、核心概念和使用场景
zookeeper是一个分布式程序的高性能协调服务,提供集中式信息存储服务,数据存储于内存中,类似文件系统的树形结构,高吞吐量和低延时,集群高可靠,基于zookeeper可以实现分布式统一配置中心.分 ...
- HBuilder 方便局域网访问调试
同一个局域网,通过IP不能访问我本地的项目,各种测试发现原来是防火墙的问题: 这里附上参考文档:内置web服务器被防火墙禁用导致预览和运行异常的解决方案
- PHP敏感信息脱敏函数
测试 $name = '王刚'; $mobile = '13817558198'; $name = desensitize($name,1,1); $mobile = desensitize($mob ...
- Part_six:Redis-cluster 实现集群
redis-cluster 1.并发问题 redis官方生成可以达到 10万/每秒,每秒执行10万条命令 假如业务需要每秒100万的命令执行呢? 2.客户端分片 redis3.0集群采用P2P模式,完 ...
- vscode编辑器自定义配置
{ //删除文件确认 "explorer.confirmDelete": false, // 主题 "workbench.iconTheme": "v ...
- eslint校验——开启服务后自动校验
"[javascriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode&q ...
- java web编程 servlet
先从请求的信息里面获取协议,版本协议如果是1.1结尾的就报错,也就是我们常见的405报错: 405是协议请求方式错误,所以要重写doget或者dopost方法,直接调用父类的get和post方法是会报 ...
- C#验证邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP类等常用函数封装
#region 验证邮箱验证邮箱 /**//// <summary> /// 验证邮箱 /// </summary> /// <param name="sour ...