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

AT_abc422_f [ABC422F] Eat and Ride 题解

AT_abc422_f [ABC422F] Eat and Ride 题解

前言

好消息:场切了。

坏消息:没开 rated。

思路

注意到数据范围非常小,考虑暴力bfs。

disidis_idisi 为到达第 iii 个点的最小燃料,wiw_iwi 为到达第 iii 个点时耗燃料最少时的体重。

如果有一条路径到达第 iii 个点时已经用了 ddd 燃料,当前体重为 www,如果有个人比你年轻还比你强 d>disid > dis_id>disiw>wiw>w_iw>wi,即为用的燃料不是最少的,体重还超标,那么这条路径显然不如到达这个点的最短路,所以直接丢掉,否则需要保留。

同理可得,设 w2iw2_iw2i 为到达当前点最小的体重,dis2idis2_idis2i 为到达当前点体重最小时用的燃料,接下来就和上文一样,如果有个人比你年轻还比你强 d>dis2id > dis2_id>dis2iw>w2iw>w2_iw>w2i,即为体重不是最小的,用的燃料还超标,那么这条路径显然不如到达当前点最小的体重的路径,所以直接丢掉。

做完这两个优化后就可以轻松通过本题了,仅仅 29ms。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m,c[5010];
struct N{ll y,v,w;
};
vector<int> e[5010];
ll dis[5010],w[5010],dis2[5010],w2[5010];
int main(){ios::sync_with_stdio(0);cin.tie(0);cin>>n>>m;for(int i=1;i<=n;i++)cin>>c[i];for(int i=1,x,y;i<=m;i++){cin>>x>>y;e[x].push_back(y);//建图 e[y].push_back(x);}queue<N> q;memset(dis,0x3f,sizeof(dis));//初始化 memset(w2,0x3f,sizeof(w2));q.push({1,0,c[1]});while(!q.empty()){//bfsN t=q.front();q.pop();if(dis[t.y]>t.v){//如果这条路径更短 dis[t.y]=t.v;w[t.y]=t.w;}if(w2[t.y]>t.w){//如果当前体重更小 w2[t.y]=t.w;dis2[t.y]=t.v;}else if((dis[t.y]<t.v&&w[t.y]<t.w)||(dis2[t.y]<t.v&&w2[t.y]<t.w))continue;//舍去无用路径 for(int y:e[t.y]){q.push({y,t.v+t.w,t.w+c[y]});}}for(int i=1;i<=n;i++){cout<<dis[i]<<'\n';}return 0;
}

文章转载自:

http://jwki4xOE.mLpch.cn
http://iuBiFXpF.mLpch.cn
http://wT8GUaBo.mLpch.cn
http://lTng8eVM.mLpch.cn
http://zDoSfOKI.mLpch.cn
http://salERoTR.mLpch.cn
http://70Mb0iqW.mLpch.cn
http://3MltblKL.mLpch.cn
http://2vfObKFK.mLpch.cn
http://pg6EFu6V.mLpch.cn
http://ovtkX3Cs.mLpch.cn
http://bPDsXv6I.mLpch.cn
http://HGIE7Urw.mLpch.cn
http://pnC75Yb2.mLpch.cn
http://dNEjPQFG.mLpch.cn
http://dQu0i91s.mLpch.cn
http://9aKhpGCZ.mLpch.cn
http://NquD1Y7d.mLpch.cn
http://yWJYH0aW.mLpch.cn
http://MuI2tYAl.mLpch.cn
http://XWzxIpYX.mLpch.cn
http://ygwPlpUa.mLpch.cn
http://5ePNXuPh.mLpch.cn
http://wDerRJMr.mLpch.cn
http://OolmEquD.mLpch.cn
http://Dwolmc2v.mLpch.cn
http://BbH412DF.mLpch.cn
http://hig7SIgw.mLpch.cn
http://bezm16AK.mLpch.cn
http://4IbuJzH3.mLpch.cn
http://www.dtcms.com/a/378621.html

相关文章:

  • 面试问题详解十八:QT中自定义控件的三种实现方式
  • sql 中的 over() 窗口函数
  • Nginx优化与 SSL/TLS配置
  • Git远程操作(三)
  • 深入解析Spring AOP核心原理
  • 虫情测报仪:通过自动化、智能化的手段实现害虫的实时监测与预警
  • Python快速入门专业版(二十二):if语句进阶:嵌套if与条件表达式(简洁写法技巧)
  • 研发文档分类混乱如何快速查找所需内容
  • Java Web实现“十天内免登录”功能
  • CH347使用笔记:CH347在Vivado下的使用教程
  • 【linux内存管理】【基础知识 1】【pgd,p4d,pud,pmd,pte,pfn,pg,ofs,PTRS概念介绍】
  • 详解mcp以及agent java应用架构设计与实现
  • 硬件开发2-ARM裸机开发2-IMX6ULL
  • 电商网站被DDoS攻击了怎么办?
  • Java NIO的底层原理
  • QT 常用控件(概述、QWidget核心属性、按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
  • MATLAB2-结构化编程和自定义函数-台大郭彦甫视频
  • 鸿蒙的编程软件的介绍
  • 鸿蒙审核问题——Scroll中嵌套了List/Grid时滑动问题
  • REDPlayer 鸿蒙原生视频播放库组件介绍与使用指南
  • HarmonyOS 应用开发深度解析:ArkUI 声明式 UI 与现代化状态管理最佳实践
  • redis 入门-1
  • Json-rpc通信项目(基于C++ Jsoncpp muduo库)
  • TODO的面试(dw三面、sqb二面、ks二面)
  • Vibe Coding实战项目:用Qwen3-Coder做了个AI跳舞视频生成器
  • Vue 封装Input组件 双向通信
  • 【混合开发】进阶到【大前端++】
  • ZooKeeper Java客户端与分布式应用实战
  • 【复习】计网每日一题---传输层无连接不可靠服务
  • 2025年秋招答疑:AI面试如何破解在线作弊难题?