CSP-J 2023 复赛第4题:旅游巴士

【题目来源】
https://www.luogu.com.cn/problem/P9751
https://www.acwing.com/problem/content/description/5313/

【题目描述】
小 Z 打算在国庆假期期间搭乘旅游巴士去一处他向往已久的景点旅游。
旅游景点的地图共有 n 处地点,在这些地点之间连有 m 条道路。
其中
1 号地点为景区入口n 号地点为景区出口
我们把一天当中景区开门营业的时间记为 0 时刻,则从 0 时刻起,每间隔 k 单位时间便有一辆旅游巴士到达景区入口,同时有一辆旅游巴士从景区出口驶离景区。
所有道路均只能单向通行。
对于每条道路,游客步行通过的用时均为恰好 1 单位时间。
小 Z 希望乘坐旅游巴士到达景区入口,并沿着自己选择的任意路径走到景区出口,再乘坐旅游巴士离开,这意味着他到达和离开景区的时间都必须是 k 的非负整数倍。
由于节假日客流众多,小 Z 在坐旅游巴士离开景区前只想一直沿着景区道路移动,而不想在任何地点(包括景区入口和出口)或者道路上停留。
出发前,小 Z 忽然得知:景区采取了限制客流的方法,对于每条道路均设置了一个“开放时间” ai,游客只有不早于 ai 时刻才能通过这条道路。
请帮助小 Z 设计一个旅游方案,使得他乘坐旅游巴士
离开景区的时间尽量地早

【输入格式】
输入的第一行包含 3 个正整数 n,m,k,表示旅游景点的地点数、道路数,以及旅游巴士的发车间隔。
输入的接下来 m 行,每行包含 3 个非负整数 ui,vi,ai,表示第 i 条道路从地点 ui 出发,到达地点 vi,道路的“开放时间”为 ai。

【输出格式】
输出一行,仅包含一个整数,表示小 Z 最早乘坐旅游巴士离开景区的时刻。
如果不存在符合要求的旅游方案,输出 -1。

【数据范围】
对于所有测试数据有:2≤n≤10^4,1≤m≤2×10^4,1≤k≤100,1≤ui,vi≤n,0≤ai≤10^6。

【输入样例】
5 5 3
1 2 0
2 5 1
1 3 0
3 4 3
4 5 1

【输出样例】
6

【样例解释】

小 Z 可以在 3 时刻到达景区入口,沿 1→3→4→5 的顺序走到景区出口,并在 6 时刻离开。

【算法分析】
本题需要用到的知识点:
○  priority_queue元素为结构体时需
重载 operator<
STL priority_queue 具有“自动排序”的强大功能。其默认使用 operator< 的比较方式进行排序。
但是,对于自定义类型(如结构体、联合体、枚举等),则必须重载 operator< 比较方式。
详见:
https://blog.csdn.net/hnjzsyjyj/article/details/124521165
例如,以下两段代码等价。

struct Node {int pr,index;
};
bool operator<(Node a,Node b) {return a.pr>b.pr;
}
struct Node {int pr,index;bool operator<(const Node &b) const {return pr>b.pr;}
};

○ 按结构体某一字段对结构体数组进行排序(C++) https://blog.csdn.net/hnjzsyjyj/article/details/120184972

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int inf=0x3f3f3f3f;
const int maxk=105;
const int maxn=10005;
vector<pair<int, int>> G[maxn];
int dis[maxn][maxk];
bool vis[maxn][maxk];
int n,m,k;struct Node {int x,y,d;bool operator<(const Node &W) const {return d>W.d;}
};void dijkstra() {priority_queue<Node> Q;memset(dis,inf,sizeof(dis));Q.push({1,0,dis[1][0]=0});while(Q.size()) {int x=Q.top().x;int y=Q.top().y;Q.pop();if(vis[x][y]) continue;vis[x][y]=1;for(int i=0; i<G[x].size(); i++) {int v=G[x][i].first;int w=G[x][i].second;int t=dis[x][y];int j=(y+1)%k;if(t<w) t+=(w-t+k-1)/k*k;if(dis[v][j]>t+1) Q.push({v,j,dis[v][j]=t+1});}}
}int main() {cin>>n>>m>>k; //scanf("%d%d%d",&n,&m,&k);while(m--) {int u,v,w;cin>>u>>v>>w; //scanf("%d%d%d",&u,&v,&w);G[u].push_back(make_pair(v,w));}dijkstra();if(dis[n][0]==inf) dis[n][0]=-1;cout<<dis[n][0]<<endl; //printf("%d\n",dis[n][0]);return 0;
}/*
in:
5 5 3
1 2 0
2 5 1
1 3 0
3 4 3
4 5 1out:
6
*/




【参考文献】
https://mp.weixin.qq.com/s/zckJsihxsDT2JNBFK1ipxA
https://www.acwing.com/problem/content/solution/5313/1/
https://www.luogu.com.cn/problem/solution/P9751
https://www.acwing.com/solution/content/214064/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/699276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<网络安全>《49 网络攻防专业课<第十四课 - 华为防火墙的使用(2)>

6 防火墙的防范技术 6.1 ARP攻击防范 攻击介绍 攻击者通过发送大量伪造的ARP请求、应答报文攻击网络设备&#xff0c;主要有ARP缓冲区溢出攻击和ARP拒绝服务攻击两种。 ARP Flood攻击&#xff08;ARP扫描攻击&#xff09;&#xff1a;攻击者利用工具扫描本网段或者跨网段主机时…

MATLAB练习题:层次分析法中出现的判断矩阵

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 层次分析法是数学建模中一个常用的模型&#xff0c;它主要用于…

unity Aaimation Rigging使用多个约束导致部分约束失去作用

在应用多个约束时&#xff0c;在Hierarchy的顺序可能会影响最终的效果。例如先应用了Aim Constraint&#xff0c;然后再应用Two Bone Constraint&#xff0c;可能会导致Two Bone Constraint受到Aim Constraint的影响而失效。因此&#xff0c;在使用多个约束时&#xff0c;应该仔…

论文笔记:利用词对比注意增强预训练汉字表征

整理了 ACL2020短文 Enhancing Pre-trained Chinese Character Representation with Word-aligned Att&#xff09;论文的阅读笔记 背景模型实验 论文地址&#xff1a;论文 背景 近年来&#xff0c;以 BERT 为代表的预训练模型在 NLP 领域取得取得了非常显著的效果。但是&…

【JAVA】Tomcat的安装

目录 官网链接 下载安装程序 解压 启动Tomcat 问题 其他文件介绍 官网链接 Apache Tomcat - Welcome!https://tomcat.apache.org/ 下载安装程序 进入官网后&#xff0c;点击如下tomcat 8: 进入tomcat 8后选择zip文件下载 解压 Tomcat是一个基于java实现的“绿色软件…

JavaGuide-SQL在mysql中的执行过程

SQL在mysql中的执行过程 原文连接 SQL在mysql中的执行过程 基础架构概览 我们先总结基本组件 连接器: 身份认证 权限相关的,我们连接的时候会验证查询缓存: 8.0之后移除,执行查询的时候,会先查缓存分析器: 分析你的sql语句,包括词法分析 语法分析优化器: 按照mysql认为最…

vue 动态渲染本地图片不显示的解决方法

代码更改前 <img class"img" :src"/assets/images/${syntheticalGrade}.png" />data(){return{syntheticalGrade:"1"} }效果图&#xff1a; 解决代码 <img class"img" :src"require(/assets/images/${syntheticalGrad…

光纤跳线的大方头跳线、小方头跳线、圆头跳线

光纤跳线在数据中心的应用非常广泛&#xff0c;它普遍应用在光纤通信系统 、光纤接入网、光纤设备传输以及局域网等领域。在光纤通信快速 发展和各种设备需求扩大的推动下&#xff0c;更多类型的光纤跳线被研发出 以及被使用。大家可能听说过LC、SC、FC、ST等跳线&#xff0c;那…

Linux命令 - 如何查询当前已使用的内存占比

结果先行 free -h | awk NR2{printf "%.2f%%", $3*100/$2 }解释一下 这个命令组合了 free -h 和 awk 命令来输出已用内存的百分比。我们一步一步来解析这个命令&#xff1a; Step 1 free -hfree 是一个用来显示 Linux 系统内存使用情况的命令。-h 参数是 “human…

成功解决TypeError: can‘t multiply sequence by non-int of type ‘float‘

&#x1f525; 成功解决TypeError: can’t multiply sequence by non-int of type ‘float’ &#x1f4c5; 日期&#xff1a;2024年2月23日 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化…

Intel处理器虚拟化技术VT-x86下实现小型虚拟化框架(1)

一.前言 我一直觉得&#xff0c;学习计算机中的一门新技术&#xff0c;一定要从历史去了解他的全貌。这样有利于我们了解事情的来龙去脉和发展的过程。一上来直接接触新兴事物&#xff0c;很容易陷入不知从何下手的困境。不了解历史发展&#xff0c;就不明白前人的一些操作。因…

Xcode中App图标和APP名称的修改

修改图标 选择Assets文件 ——> 点击Applcon 换App图标 修改名称 点击项目名 ——> General ——> Display Name

Servlet(2)

文章目录 更方便的部署方式安装 Smart Tomcat 插件配置 Smart Tomcat 插件 访问出错怎么办出现 404出现 405出现 500出现 "空白页面"出现 "无法访问此网站" 小结 更方便的部署方式 手动拷贝 war 包到 Tomcat 的过程比较麻烦. 我们还有更方便的办法. 此处我…

智慧校园的未来已来!AI与数字孪生领航教育新时代

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;和数字孪生技术正逐渐渗透到我们生活的方方面面&#xff0c;而在教育领域&#xff0c;它们的结合更是催生出一种全新的智慧校园模式。这种模式的出现&#xff0c;不仅预示着教育管理方式的彻底变革&#xff0…

网络原理 - HTTP/HTTPS(5)

HTTPS HTTPS也是一个应用层协议.在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的. 这就导致了在传输过程中出现了一些被篡改的情况. 臭名昭著的"运营商劫持" 下载一个天天动听. 未被劫持的效果,点击下载按钮,就会弹出天天动听的…

【linux】常见指令 -通配符,数据管道,重定向,压缩打包...

目录 前言 基本指令 ls命令 常见选项 ​编辑 pwd命令 cd 指令 常见选项 touch指令 mkdir指令 常见选项 rm 指令 常见选项 man指令 cp指令 常用选项&#xff1a; mv指令 常用选项 nano指令 如何写入且执行文件&#xff1f; cat指令 常用选项 more指令…

基于RK3399 Android11适配OV13850 MIPI摄像头

目录 1、原理图分析2、编写和配置设备树3、调试方法4、遇到的问题与解决5、补丁 1、原理图分析 从上图可看出&#xff0c;我们需要关心的&#xff0c;①MIPI数据和时钟接口使用的是MIPI_TX1/RX1 ②I2C使用的是I2C4总线 ③RST复位引脚使用的是GPIO2_D2 ④PWDN使用的是GPIO1_C7 ⑤…

【Python笔记-设计模式】外观模式

一、说明 外观模式是一种结构型设计模式&#xff0c;能为程序库、框架或其他复杂类提供一个统一的接口。 (一) 解决问题 简化复杂系统的接口调用 (二) 使用场景 简化复杂系统&#xff1a;需要一个指向复杂子系统的直接接口&#xff0c; 且该接口的功能有限时重构复杂的代码…

unity ui界面优化

优化一个比较复杂的界面&#xff0c;里面有多个rt和组件。 在初次打开这个界面的时候会发生1s多的卡顿&#xff0c;还是非常严重的。 分析 通过profiler分析 1.打开界面时卡顿。 分析&#xff1a;除了update和dotween相关逻辑&#xff0c;主要在于打开时的lua function调用…

幻兽帕鲁(Palworld 1.4.1)私有服务器搭建(docker版)

文章目录 说明客户端安装服务器部署1Panel安装和配置docker服务初始化设置设置开机自启动设置镜像加速 游戏服务端部署游戏服务端参数可视化配置 Palworld连接服务器问题总结 说明 服务器硬件要求&#xff1a;Linux系统/Window系统&#xff08;x86架构&#xff0c;armbian架构…