当前位置: 首页 > news >正文

洛谷p1462-通往奥格瑞码道路

题目:https://www.luogu.com.cn/problem/P1462
思考过程:
刚拿到这个题,我把消耗的血量和路费当成了负权边去考虑,考虑到我们只需要考虑扣钱的最优,并且在血量扣尽之前达到就好,那我觉得可以用一个数组hp来代表实时血量,拿一个值来更新目前到这个点的最大花费,我觉得肯定是优先走钱少的点,如果hp被扣完了,再回溯走下一个。
如果按我这个思路走就是dij+spfa+贪心+dfs,就特别麻烦,后来看题解思路意识到,“最大的最小,最小的最大”之类的题,用二分。
那么这道题就可以用二分加dij简易实现。用二分查找一个值,这个值要介于f数组最小和最大之间才能构成二分。然后判断是否存在这么一条路,如果能在hp减为0之前能达到,说明这个mid值是ok的,就可以继续降低mid值,反之增大。
接下来是代码实现:

点击查看代码
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const ll INF=1e18;
bool check(ll mid,int n,int b,const vector<int>&ff,const vector<vector<pair<int,int>>>&gg){if(ff[1]>mid||ff[n]>mid) return false;vector<ll>dist(n+1,INF);vector<bool>vis(n+1,false);priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<pair<ll,int>>>pq;pq.push({0,1});dist[1]=0;// vis[1]=true;while(!pq.empty()){auto[d,u]=pq.top();pq.pop();if(vis[u]) continue;vis[u]=true;for(auto[v,w]:gg[u]){if(ff[v]<=mid){if(d+w<dist[v]){dist[v]=d+w;pq.push({dist[v],v});}}}}return dist[n]<=b;
}
void solve(){int n,m;ll b;cin>>n>>m>>b;vector<int>f(n+1);int maxf=0;for(int i=1;i<=n;i++){// int f;cin>>f[i];maxf=max(maxf,f[i]);}vector<vector<pair<int,int>>>g(n+1);for(int i=0;i<m;i++){int u,v,w;cin>>u>>v>>w;g[u].push_back({v,w});g[v].push_back({u,w});}ll l=0;ll r=ll(maxf)+1;ll ans=-1;while(l<=r){ll mid=(l+r)>>1;if(check(mid,n,b,f,g)){ans=mid;r=mid-1;}else l=mid+1;}if(ans==-1) cout<<"AFK\n";else cout<<ans<<"\n";
}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);solve();return 0;
}
http://www.zskr.cn/news/22522.html

相关文章:

  • AI安全新威胁:提示注入与模型中毒攻击深度解析
  • Codeforces 380E Sereja and Dividing 题解 [ 紫 ] [ 线段树 ] [ 贪心 ] [ 数学 ]
  • JPA教程
  • v-model 的实现原理
  • 详细介绍:【译】Visual Studio 中针对 .NET MAUI 的 XAML 实时预览功能的增强
  • docker镜像层和容器层
  • 2025.10.16总结 - A
  • 20251016 正睿二十连测
  • [贝佐斯-六页纸]
  • 感知节点@7@ ESP32+arduino+ 第五个程序FreeRTOS 上 增加一个新任务ADC任务
  • 2025年10月切削液厂家 TOP 企业品牌推荐排行榜,全合成切削液,半合成切削液,微乳切削液推荐这十家公司!
  • 详细介绍:学习:uniapp全栈微信小程序vue3后台(29)
  • lianxi
  • Zookeeper 技术详细介绍 - 指南
  • PostgreSQL 为什么不选择 B+ 树索引? - Lafite
  • Redis 集群从部署到可视化管理全流程(超详细实战指南)
  • P1072 [NOIP 2009 提高组] Hankson 的趣味题
  • Meta推出Agent Learning via Early Experience,推动语言代理自主学习新范式
  • fiddlerscriptCustomize Menus - 特洛伊
  • Fiddler And LINQ - 特洛伊
  • 动态加速中优化失败路径反馈的方法
  • 铜价冲击下,如何“锁住”母排利润?
  • 10.16读书报告
  • 元推理:哥德尔搞不完定理,翻来覆去的搞。。。。
  • PostgreSQL社区CUUG 院校行 - 内蒙古农业大学计算机与信息工程学院
  • 2025年铝复合板厂家综合实力排行榜TOP10:一站式服务成行业新趋势
  • 2025年市面上桥架品牌排行榜前十强权威解析
  • 2025年桥架品牌综合实力排行榜:十大优质供应商权威评测
  • 2025 年注浆管生产厂家最新推荐榜:聚焦密封性能,精选优质企业助力工程采购决策岩心管/钢花管/管棚管/注浆管小导管厂家推荐
  • Nx项目中利用Vitest对原生JS组件进行单元测试