PTA 道路管制
乌拉乌拉国有n个城市和m条道路,城市编号为1∼n。由于乌拉乌拉国每一个城市都在创城(创建文明城市),因此,城市之间的道路通行施行道路交通管制:
已知从城市ui到城市vi的道路,需要时间ti。但是一旦当道路管理员进入某条道路后,任何人在道路管理员未驶出该道路前不允许进入该道路。例如:道路管理员在第4时刻进入该道路,在路上需要花费3时,那么在第4∼6时刻不允许其他人进入改街道,只能第7时刻及其以后进入或者在第4时刻之前进入。
现在,计算鸭知道,道路管理员从0时刻出发,依次经过g个城市,计算鸭从时刻k出发,从城市a前往城市b。请问,计算鸭最少需要多长时间。输入格式:
输入的第一行给出两个整数n,m——表示城市的数量和道路的数量。
输入的第二行给出四个整数a,b,k,g——a,b分别表示计算鸭的初始城市和目的城市;k表示计算鸭出发时刻;g表示道路管理员需要经过的城市数量。
输入的第三行给出g个整数xi——表示道路管理员需要经过的城市编号。
接下来m行,每行3个整数ui,vi,ti——表示从ui至vi需要用时ti
2≤n≤103
2≤m≤104
1≤a,b,ui,vi≤n
0≤k,g≤103
1≤ti≤103
输出格式:
输出一个整数——表示计算鸭从a城市到b城市的最短用时。
输入样例:
6 5 1 6 20 4 5 3 2 4 1 2 2 2 3 8 2 4 3 3 6 10 3 5 15输出样例:
21输入样例:
8 9 1 5 5 5 1 2 3 4 5 1 2 8 2 7 4 2 3 10 6 7 40 3 6 5 6 8 3 4 8 4 4 5 5 3 4 23输出样例:
40
思路:
定义一个mp[N][N]数组记录每条道路的长度;
for(int i = 1 ; i <= m ; i ++){ll u , v , w;cin >> u >> v >> w;add(u,v,w) , add(v,u,w);mp[u][v] = mp[v][u] = w;}
一个tle[N][N][2]数组记录道路的禁止进入的开始和结束时间,now为当前的时间。
比如3->5的花费是15,那么禁行时间为0->14,接下来3->2是8,禁行时间为15->22;
for(int i = 0 ; i < g - 1; i ++){tle[gl[i]][gl[i+1]][0] = tle[gl[i+1]][gl[i]][0] = now;now += mp[gl[i]][gl[i+1]] - 1;tle[gl[i]][gl[i+1]][1] = tle[gl[i+1]][gl[i]][1] = now;now ++ ;}
记录鸭要从k时压入队列进行做短路。
如果当前点的时间花费在不能走当前想走的道路的禁行时间内,那么只能在禁行时间后开始走。
若不在禁行时间内,则直接进行普通最短路。
if(dist[t] >= tle[t][x][0] && dist[t] <= tle[t][x][1]){if(dist[x] <= tle[t][x][1] + 1 + w[i])continue;dist[x] = tle[t][x][1] + 1 + w[i];q.push({dist[x],x});}else{if(dist[x] <= dist[t] + w[i])continue ;dist[x] = dist[t] + w[i];q.push({dist[x],x}); }
总代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n , m , T ;
const int N = 1005 , M = 20005;
int e[M] , ne[M] , w[M] , dist[N] , h[N] , idx;
bool st[N];
void add(int a,int b,int c){ne[idx] = h[a] , e[idx] = b , w[idx] = c , h[a] = idx ++;
}
#define pii pair<int,int>
ll tle[N][N][2];
void bfs(int a,int b,int k){memset(dist,0x3f,sizeof dist);memset(st,0,sizeof st);priority_queue<pii,vector<pii>,greater<pii> >q;dist[a] = k;q.push({dist[a],a});while(!q.empty()){auto t = q.top().second;q.pop();if(st[t])continue ;st[t] = 1;for(int i = h[t] ; ~ i ; i = ne[i]){int x = e[i];if(dist[t] >= tle[t][x][0] && dist[t] <= tle[t][x][1]){if(dist[x] <= tle[t][x][1] + 1 + w[i])continue;dist[x] = tle[t][x][1] + 1 + w[i];q.push({dist[x],x});}else{if(dist[x] <= dist[t] + w[i])continue ;dist[x] = dist[t] + w[i];q.push({dist[x],x}); }}}cout << dist[b] - k << endl;
}
ll mp[N][N] , gl[N];
int main(){idx = 0;memset(h , -1,sizeof h);cin >> n >> m;ll a , b , k , g;cin >> a >> b >> k >> g;for(int i = 0 ; i < g ; i ++){cin >> gl[i];}ll cnt = 0 , now = 0;for(int i = 1 ; i <= m ; i ++){ll u , v , w;cin >> u >> v >> w;add(u,v,w) , add(v,u,w);mp[u][v] = mp[v][u] = w;}for(int i = 0 ; i < g - 1; i ++){tle[gl[i]][gl[i+1]][0] = tle[gl[i+1]][gl[i]][0] = now;now += mp[gl[i]][gl[i+1]] - 1;tle[gl[i]][gl[i+1]][1] = tle[gl[i+1]][gl[i]][1] = now;now ++ ;}bfs(a,b,k);
}
相关文章:
PTA 道路管制
乌拉乌拉国有n个城市和m条道路,城市编号为1∼n。由于乌拉乌拉国每一个城市都在创城(创建文明城市),因此,城市之间的道路通行施行道路交通管制: 已知从城市ui到城市vi的道路,需要时间ti。…...
自媒体用ChatGPT批量洗稿软件V5.9环境配置/软件设置教程【汇总】
大家好,我是淘小白~ 首先,感谢大家的支持~~ ChatGPT采集洗稿软件V5.9版本更新,此次版本更新修改增加了一些内容: 1、自定义多条指令,软件自动判断指令条数,进行输入 2、增加谷歌浏览多账号轮询…...
【WPF应用7】 基本控件-Grid 布局的详解与示例
引言 WPF(Windows Presentation Foundation)是.NET框架的一部分,它提供了一个用于创建桌面应用程序用户界面的框架。在WPF中,Grid布局是一个非常强大的布局工具,它允许开发者创建复杂的、响应迅速的用户界面布局。Grid…...
flink-connector-redis支持select查询
EN 1 项目介绍 基于bahir-flink二次开发,相对bahir调整的内容有: 1.使用Lettuce替换Jedis,同步读写改为异步读写,大幅度提升了性能 2.增加了Table/SQL API,增加select/维表join查询支持 3.增加关联查询缓存(支持增量与全量) 4…...
[密码学] 密码学基础
目录 一 为什么要加密? 二 常见的密码算法 三 密钥 四 密码学常识 五 密码信息威胁 六 凯撒密码 一 为什么要加密? 在互联网的通信中,数据是通过很多计算机或者通信设备相互转发,才能够到达目的地,所以在这个转发的过程中,如果通信包…...
上海:6月1日起取消企业复工复产白名单制
财经新闻5月29日消息:上海市人民政府关于印发《上海市加快经济恢复振兴行动计划》的通知。 《方案》包括千方百计缓解各类市场主体困难,全面有序推进复工复产和市场复工复产,多措并举稳外资稳外贸,大力促进消费加速复苏࿰…...
SpringBoot扩展篇:循环依赖源码链路
SpringBoot扩展篇:循环依赖源码链路 1. 相关文章2. 一个简单的Demo3. 流程图3.1 BeanDefinition的注册3.2 开始创建Bean3.3 从三级缓存获取Bean3.4 创建Bean3.5 实例化Bean3.6 添加三级缓存3.7 属性初始化3.8 B的创建过程3.9 最终流程 1. 相关文章 SpringBoot 源码…...
服务消费微服务
文章目录 1.示意图2.环境搭建1.创建会员消费微服务模块2.删除不必要的两个文件3.检查父子模块的pom.xml文件1.子模块2.父模块 4.pom.xml 添加依赖(刷新)5.application.yml 配置监听端口和服务名6.com/sun/springcloud/MemberConsumerApplication.java 创…...
uni-app纵向步骤条
分享一下项目中自封装的步骤条,存个档~ 1. 话不多说,先看效果 2. 话还不多说,上代码 <template><!-- 获取一个数组,结构为[{nodeName:"流程发起"isAudit:falsetime:"2024-02-04 14:27:35"otherDat…...
【JavaEE -- 文件操作IO有关面试题】
文件操作IO有关面试题 1.查找硬盘上的文件位置1.1 思路1.2 执行代码 2. 实现文件复制2.1 思路2.2 代码执行 3. 打印搜索的词的文件路径3.1 思路3.2 代码执行 1.查找硬盘上的文件位置 给定一个文件名,去指定的目录中进行搜索,找到文件名匹配的结果&#…...
Open WebUI大模型对话平台-适配Ollama
什么是Open WebUI Open WebUI是一种可扩展、功能丰富、用户友好的大模型对话平台,旨在完全离线运行。它支持各种LLM运行程序,包括与Ollama和Openai兼容的API。 功能 直观的界面:我们的聊天界面灵感来自ChatGPT,确保了用户友好的体验。响应…...
[2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
今天在漏洞扫描的时候蹦出来一个zookeeper的漏洞问题,即使是非zookeeper的节点,或者是非集群内部节点,也可以通过nc扫描2181端口,获取极多的zk信息。关于漏洞的详细描述参考apache zookeeper官方概述:CVE-2018-8012: A…...
vscode添加gitee
1.创建仓库 2.Git 全局设置 3.初始化仓库 2.1 打开vscode打开需要上传到给git的代码文件 2.2.点击左边菜单第三个的源代码管理->初始化仓库 4.点击加号暂存所有更改 5.添加远程仓库 5.1 添加地址,回车 5.2 填写库名,回车 6.提交和推送 6.1 点击✔提交…...
数据库底层原理
本文将介绍数据库在储存和通讯时的原理 数据库储存 首先,数据库的作用持久化存储数据,数据库的存储形式就是文件,每一张表就是一个文件,其他数据也是文件形式,比如索引文件。 比如像mysql数据库,其中的数…...
JVM虚拟机-实战篇
专属小彩蛋:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站(前言 - 床长人工智能教程) 目录 一、内存溢出和内存泄漏 什么是内存泄漏? 二、解决内存泄漏 解决内存泄漏的思路 top命令 发现问题 VisualVM 发现问…...
上岸跨考生的备考经验,送给零基础跨考计算机的你!
九个月的时间绝对是够用的,就算是跨考也够用! 一般来说,专业课要复习三轮,九个月的时间,复习三轮完全够用 复习资料:王道四本书王道真题 打基础阶段:3-6月: 学习目标:…...
js改变图片曝光度(高亮度)
方法一: 原理: 使用canvas进行滤镜操作,通过改变图片数据每个像素点的RGB值来提高图片亮度。 缺点 当前项目使用的是svg,而不是canvas 调整出来的效果不是很好,图片不是高亮,而是有些发白 效果 代码 …...
【NLP笔记】大模型prompt推理(提问)技巧
文章目录 prompt概述推理(提问)技巧基础prompt构造技巧进阶优化技巧prompt自动优化 参考链接: Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing预训练、提示和预测:NL…...
【目标检测】西红柿成熟度数据集三类标签原始数据集280张
文末有分享链接 标签名称names: - unripe - semi-ripe - fully-ripe D00399-西红柿成熟度数据集三类标签原始数据集280张...
Java File类(文件操作类)
背景: 在Java编程语言中,操作文件和目录是一项常见的任务。而File类,则是java.io包中的重要类,它是唯一代表磁盘文件本身的对象。通过File类提供的方法,我们可以轻松地创建、删除、重命名文件和目录等操作。 构造方法&…...
【实战指南】彻底解决conda环境变量配置错误:从报错分析到.bashrc修复
1. 遇到conda环境变量报错怎么办? 刚装完Anaconda/Miniconda,满心欢喜准备大展身手,结果终端里输入conda却蹦出一行刺眼的红色报错:"bash: /opt/conda/bin/conda: No such file or directory"。这种场景我见过太多次了&…...
我的世界Waterfall跨服配置避坑指南:从‘连接被拒绝’到流畅穿梭的完整排错流程
我的世界Waterfall跨服配置避坑指南:从‘连接被拒绝’到流畅穿梭的完整排错流程 当你兴奋地搭建好Waterfall跨服架构,却在测试时遭遇"连接被拒绝"的红色提示,或是玩家卡在大厅无法切换子服时,那种挫败感我深有体会。本文…...
【2026唯一认证流式部署标准】:FastAPI 2.0 + Uvicorn 24.8 + ASGI 4.0协同流控协议详解(含OpenTelemetry追踪模板)
第一章:FastAPI 2.0 异步 AI 流式响应的范式演进与2026标准定位FastAPI 2.0 将原生支持全链路异步流式响应(StreamingResponse)与 Server-Sent Events(SSE)语义融合,标志着 AI 应用后端从“请求-响应”单次…...
【数字逻辑】实战解析:从PLD到FPGA的演进与应用场景
1. 可编程逻辑器件的技术演进之路 第一次接触可编程逻辑器件是在大学实验室里,当时看着老师用一个小芯片就实现了整个数字钟的功能,完全颠覆了我对传统电路板的认知。这种"魔术般"的芯片就是PLD(可编程逻辑器件)&#…...
全域软开关直流变换器TPEL论文仿真复现之旅
全域软开关直流变换器 TPEL论文仿真复现最近一头扎进了全域软开关直流变换器的研究里,主要在琢磨TPEL论文相关内容,那仿真复现就成了关键任务。今天就来和大家唠唠这个过程中的酸甜苦辣。 一、全域软开关直流变换器是啥? 简单来说,…...
Qwen3字幕生成工具实战:快速处理会议录音,输出带时间戳字幕
Qwen3字幕生成工具实战:快速处理会议录音,输出带时间戳字幕 1. 会议录音转字幕的痛点与解决方案 处理会议录音是许多职场人士的日常任务。传统方法需要先听录音,再手动记录内容,最后还要逐句对齐时间轴,整个过程耗时…...
PyArmor解包终极指南:3种高效逆向分析技巧快速掌握代码解密核心技术
PyArmor解包终极指南:3种高效逆向分析技巧快速掌握代码解密核心技术 【免费下载链接】PyArmor-Unpacker A deobfuscator for PyArmor. 项目地址: https://gitcode.com/gh_mirrors/py/PyArmor-Unpacker PyArmor-Unpacker是一个专为Python开发者和安全研究人员…...
RTKLIB 2.4.3 b34 多系统兼容配置与实战调试指南
1. RTKLIB 2.4.3 b34多系统配置入门 第一次接触RTKLIB的朋友可能会被它的多系统支持能力惊艳到。这个开源软件不仅能处理GPS数据,还能同时解算GLONASS、Galileo、北斗等多个卫星系统的观测数据。我去年在做一个农业无人机项目时,就深刻体会到多系统兼容的…...
音乐播放器界面定制指南:foobar2000美化方案与体验提升
音乐播放器界面定制指南:foobar2000美化方案与体验提升 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 在数字音乐时代,播放器已不仅是播放工具,更是个人音乐品味的…...
避坑指南:在ESXi或Proxmox VE虚拟化平台下配置Intel I350网卡直通与PXE启动
虚拟化环境下的Intel I350网卡直通与PXE启动全流程解析 在虚拟化技术日益普及的今天,企业级用户经常面临将物理网卡直通给虚拟机并实现PXE网络启动的需求。Intel I350系列网卡以其稳定性和高性能成为众多虚拟化平台的首选,但在ESXi和Proxmox VE等环境中…...
