Codeforces Round 927 (Div. 3) G. Moving Platforms --- 题解 (非常好的题)

目录

Codeforces Round 927 (Div. 3) G. Moving Platforms:

原题链接:Problem - G - Codeforces

题目大意:

思路解析:

代码实现:


Codeforces Round 927 (Div. 3) G. Moving Platforms:

原题链接:Problem - G - Codeforces

题目大意:

        给你n个城市,m条道路,组成一个无向图,给你一个模数h,每个城市有一个初始价值为si,并且每个城市在每秒会有一个变化值li,当 (si+ t * li) mod h == (sj + t * lj) mod h时通道才会打开,问从第一个城市到最后一个城市最少需要多少时间,如果无法到达输出-1.

思路解析:

        给你n个城市,m条道路,组成一个无向图,问从第一个城市到最后一个城市最少需要多少时间这里很容易可以想到需要用到最短路,但是在跑最短路时我们怎么判断当前两个城市是否能够进行转移,或者转移需要等待多长时间,便成了主要难点。

        

        

代码实现:

import java.io.*;
import java.util.*;public class Main {public static void main(String[] args) throws IOException {int T = input.nextInt();for (int o = 0; o < T; o++) {int n = input.nextInt();int m = input.nextInt();int H = input.nextInt();Vector<Integer> g[] = new Vector[n];for (int i = 0; i < n; i++) {g[i] = new Vector<>();}PriorityQueue<Node> nodes = new PriorityQueue<Node>(new Comparator<Node>() {@Overridepublic int compare(Node o1, Node o2) {if (o1.time > o2.time) return 1;else if (o1.time == o2.time) return o1.x - o2.x;return -1;}});int[] l = new int[n+1];long[] s = new long[n+1];for (int i = 0; i < n; i++) {l[i] = input.nextInt();}for (int i = 0; i < n; i++) {s[i] = input.nextInt();}for (int i = 0; i < m; i++) {int x = input.nextInt() - 1;int y = input.nextInt() - 1;g[x].add(y);g[y].add(x);}long[] dp = new long[n];Arrays.fill(dp, (long) 1e18);dp[0] = 0;nodes.add(new Node(0, dp[0]));while (!nodes.isEmpty()){Node cur = nodes.poll();int v = cur.x;long t = dp[v];if (t < cur.time) continue; // 因为他可能里面存放了多个 u,dp[u]的点,选择当时加入时dp[u]最小的那个进行遍历即可for (Integer u : g[v]) {long a = (l[v] + (t % H) * s[v]) - (l[u] + (t % H) * s[u]);a %= H;if (a < 0) a += H;long b = s[u] - s[v];b %= H;if (b < 0) b += H;// a - bx = yHlong[] arr = eucl(b, H);long dd = arr[0];long x = arr[1];// xb + yH = ddif (a % dd != 0) continue;x *= a / dd;x %= (H / dd);if (x < 0) x += H / dd;long dt = x;if (dp[v] + dt + 1 < dp[u]){dp[u] = dp[v] + dt + 1;nodes.add(new Node(u, dp[u]));}}}if (dp[n - 1] == (long) 1e18) out.println(-1);else out.println(dp[n - 1]);}out.flush();out.close();br.close();}public static long[] eucl(long a, long b) { // 扩展欧几里得if (b == 0) {return new long[]{a, 1, 0}; //}long k = a / b;long[] arr = eucl(b, a - k * b);return new long[]{arr[0], arr[2], arr[1] - k * arr[2]};}public static class Node{int x;long time;public Node(int x, long time){this.x = x;this.time = time;}}static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));static Input input = new Input(System.in);static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static class Input {public BufferedReader reader;public StringTokenizer tokenizer;public Input(InputStream stream) {reader = new BufferedReader(new InputStreamReader(stream), 32768);tokenizer = null;}public String next() {while (tokenizer == null || !tokenizer.hasMoreTokens()) {try {tokenizer = new StringTokenizer(reader.readLine());} catch (IOException e) {throw new RuntimeException(e);}}return tokenizer.nextToken();}public int nextInt() {return Integer.parseInt(next());}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

排序算法之——归并排序

归并排序 1. 基本思想2. 数据的分解3. 数据的合并4.归并排序的实现4.1 递归实现4.1.1 一个易错点4.1.2 运行结果 4.2 非递归实现4.2.1 图示思路4.2.2 代码实现4.2.3 一个易错点4.2.4 修改后的代码4.2.5 运行结果 6. 时间复杂度7. 空间复杂度8. 稳定性9. 动图演示 1. 基本思想 …

了解CSS Flex:解析实例、用法和案例研究

Flex布局 01-标准流 标准流也叫文档流&#xff0c;指的是标签在页面中默认的排布规则&#xff0c;例如&#xff1a;块元素独占一行&#xff0c;行内元素可以一行显示多个。 02-浮动 基本使用 作用&#xff1a;让块元素水平排列。 属性名&#xff1a;float 属性值 left&…

发电机中为什么电磁控制阀如此省油?

为什么电磁控制阀如此省油? 1。细油浸电磁运动的设计。 推杆浸没在系统中的油中&#xff0c;具有缓冲效果。即使在高压和高频开关的情况下&#xff0c;它仍然可以保持沉默。 油浸滑动芯完全消除了运动部件之间的摩擦和滑动柱的摩擦&#xff0c;以及由此引起的油泄漏&#xff…

《授她以柄》口碑暴跌,短剧售后学的错误示范

2024年的春节档&#xff0c;短剧刷足了存在感&#xff0c;不只是多部短剧出圈霸屏&#xff0c;售后的幺蛾子也不少。 继《我在八零年代当后妈》在抖音刷屏后&#xff0c;腾讯短剧《授她以柄》强势登顶德塔文、Vlinkage等多个榜单&#xff0c;分账票房破500万&#xff0c;成为了…

面试必问!JVM 不得不说的知识点(三)

一、 JVM指令集: 1. 了解Java虚拟机的指令集是什么?举例说明一些常见的指令及其作用。 Java虚拟机的指令集是一组用于执行Java程序的低级操作码。这些指令直接在Java虚拟机上执行,可以认为是Java程序的二进制表示形式。以下是一些常见的Java虚拟机指令及其作用的例子: ic…

供水管网监测远程管理解决方案

供水管网监测远程管理解决方案 供水管网作为城市基础设施的重要组成部分&#xff0c;其运行状况直接影响到居民的饮用水安全和城市的水资源利用。然而&#xff0c;传统供水管网管理存在管理效率低、漏损率高、故障排查困难等问题。随着物联网技术的不断发展&#xff0c;利用物…

桥接模式:解耦抽象与实现,实现灵活多变的扩展结构

文章目录 一、引言二、应用场景与技术背景三、模式定义与实现四、实例详解五、优缺点分析总结&#xff1a; 一、引言 ​ 桥接模式是一种结构型设计模式&#xff0c;它将抽象部分与它的实现部分分离&#xff0c;使它们可以独立变化。这种模式通过创建一个抽象层和实现层的结构&…

io进程线程第七天

1.使用消息队列完成两个进程之间的通信 程序A代码&#xff1a; #include <myhead.h> struct msgbuf {long mtype;char mtext[1024]; }; //定义一个宏&#xff0c;表示消息正文内容的大小 #define MSGSIZE sizeof(struct msgbuf)-sizeof(long)int main(int argc, const c…

目标检测-Transformer-ViT和DETR

文章目录 前言一、ViT应用和结论结构及创新点 二、DETR应用和结论结构及创新点 总结 前言 随着Transformer爆火以来&#xff0c;NLP领域迎来了大模型时代&#xff0c;成为AI目前最先进和火爆的领域&#xff0c;介于Transformer的先进性&#xff0c;基于Transformer架构的CV模型…

Devvortex

目标靶机 攻击机IP地址为10.10.16.2 信息收集 # nmap -sT --min-rate 10000 -p- 10.10.11.242 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-21 10:32 CST Warning: 10.10.11.242 giving up on port because retransmission cap hit (10). Nma…

第三方支付机构最新“POS”机刷卡费用公式

多家支付机构发布了最新的刷卡费用公示。 《非银行支付机构监督管理条例》(简称《条例》)由国务院发布&#xff0c;明确规定非银行支付机构须按照相关价格法律、行政法规的规定&#xff0c;合理确定并公开支付业务的收费项目和收费标准&#xff0c;以明码标价。 支付行业在春节…

Shell的运行原理以及Linux当中的权限问题

本专栏内容为&#xff1a;Linux学习专栏&#xff0c;分为系统和网络两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握Linux。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;Liunx从入门到精通 &#x1f69a;代码仓库&#xff1a;小…

k8s(2)

目录 一.二进制部署k8s 常见的K8S安装部署方式&#xff1a; k8s部署 二进制与高可用的区别 二.部署k8s 初始化操作&#xff1a; 每台node安装docker&#xff1a; 在 master01 节点上操作; 准备cfssl证书生成工具:&#xff1a; 执行脚本文件&#xff1a; 拉入etcd压缩包…

国产大模型,不会开启“烧钱游戏”

最近&#xff0c;OpenAI的Sora又在科技圈投入一枚深水炸弹。全球对于大模型的关注&#xff0c;又一次达到高峰。 聚焦到国内&#xff0c;百度、科大讯飞、商汤、华为等大型企业&#xff0c;以及海量的创业小公司都在布局大模型。以往每一次风口吹来的时候&#xff0c;资本总会…

springboot网站开发02-接入持久层框架mybatisPlus

springboot网站开发02-接入持久层框架mybatisPlus&#xff01;经过上一小节内容分享&#xff0c;我们的项目嵌套模式框架搭建好了&#xff0c;下面就是开始编辑具体的业务代码了&#xff0c;我们使用到了持久层框架是mybatisPlus插件。下面是一些具体的植入框架的操作步骤。 第…

C# cass10 宗地初始化-根据 “预编号” “权利人”图层对应信息 批量添加到宗地图层

运行环境Visual Studio 2022 c# cad2016 cass10 根据 “预编号” “权利人”图层对应信息 批量添加到宗地图层 一、主要步骤 zdimport 方法&#xff1a;这个方法用于导入宗地信息。首先通过调用 AutoCAD API 获取当前活动文档、数据库和编辑器对象。然后根据 CreatePalette.Se…

[OpenAI]继ChatGPT后发布的Sora模型原理与体验通道

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言OpenAI体验通道Spacetime Latent Patches 潜变量时空碎片, 建构视觉语言系统…

day11_内部类代码块枚举课后练习 - 参考答案

文章目录 day11_课后练习代码阅读题第1题第2题第3题第4题第5题第6题第7题第8题第9题第10题第11题第12题 代码编程题第13题 day11_课后练习 代码阅读题 第1题 知识点&#xff1a;实例初始化 案例&#xff1a;判断运行结果 package com.atguigu.test01;class HelloA{public …

稳定运行矿山鸿蒙系统——飞凌嵌入式的这2款核心板获得「矿鸿资质证书」

飞凌嵌入式FETMX6ULL-S核心板和FETA40i-C核心板近期通过了“矿鸿兼容性测试认证”&#xff0c;这两款嵌入式核心板与矿鸿OS的结合将进一步推动煤矿行业的智能化进程。 矿鸿&#xff08;MineHarmony&#xff09;操作系统是由国家能源集团基于鸿蒙系统推出的一款专为煤矿行业设计…

网页403错误(Spring Security报异常 Encoded password does not look like BCrypt)

这个错误通常表现为"403 Forbidden"或"HTTP Status 403"&#xff0c;它指的是访问资源被服务器理解但拒绝授权。换句话说&#xff0c;服务器可以理解你请求看到的页面&#xff0c;但它拒绝给你权限。 也就是说很可能测试给定的参数有问题&#xff0c;后端…