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

UVA1025 城市里的间谍 A Spy in the Metro

UVA1025 城市里的间谍 A Spy in the Metro

题面翻译

题目大意

某城市地铁是一条直线,有 n n n 2 ≤ n ≤ 50 2\leq n\leq 50 2n50)个车站,从左到右编号 1 … n 1\ldots n 1n。有 M 1 M_1 M1 辆列车从第 1 1 1 站开始往右开,还有 M 2 M_2 M2 辆列车从第 n n n 站开始往左开。列车在相邻站台间所需的运行时间是固定的,因为所有列车的运行速度是相同的。在时刻 0 0 0,Mario 从第 1 1 1 站出发,目的在时刻 T T T 0 ≤ T ≤ 200 0\leq T\leq 200 0T200)会见车站 n n n 的一个间谍。在车站等车时容易被抓,所以她决定尽量躲在开动的火车上,让在车站等待的时间尽量短。列车靠站停车时间忽略不计,且 Mario 身手敏捷,即使两辆方向不同的列车在同一时间靠站,Mario 也能完成换乘。

输入格式

输入文件包含多组数据。

每一组数据包含以下 7 7 7 行:

第一行是一个正整数 n n n,表示有 n n n 个车站。

第二行是为 T T T,表示 Mario 在时刻 T T T 会见车站 n n n 的间谍。

第三行有 n − 1 n-1 n1 个整数 t 1 , t 2 , … , t n − 1 t_1,t_2,\ldots,t_{n-1} t1,t2,,tn1,其中 t i t_i ti 表示地铁从车站 i i i i + 1 i+1 i+1 的行驶时间。

第四行为 M 1 M_1 M1,及从第一站出发向右开的列车数目。

第五行包含 M 1 M_1 M1 个正整数 a 1 , a 2 , … , a M 1 a_1,a_2,\ldots,a_{M_1} a1,a2,,aM1,即每个列车出发的时间。

第六行为 M 2 M_2 M2 ,即从第 n n n 站出发向左开的列车数目。

第七行包含 M 2 M_2 M2 个正整数 b 1 , b 2 , … , b M 2 b_1,b_2,\ldots,b_{M_2} b1,b2,,bM2,即每个列车出发的时间。

输入文件以一行 0 0 0 结尾。

输出格式

有若干行,每行先输出 Case Number XXX : (XXX为情况编号,从 1 1 1 开始),再输出最少等待时间或 impossible(无解)。

题目描述

PDF

输入格式

输出格式

样例 #1

样例输入 #1

4
55
5 10 15
4
0 5 10 20
4
0 5 10 15
4
18
1 2 3
5
0 3 6 10 12
6
0 3 5 7 12 15
2
30
20
1
20
7
1 3 5 7 11 13 17
0

样例输出 #1

Case Number 1: 5
Case Number 2: 0
Case Number 3: impossible

Solution

采用动态规划算法

dp[i][j]代表第i时刻到在第j站的等待的时间,因为要在T时间内达到第n站,且要求尽可能多的时间在地铁上度过,由此可以知要求dp[T][n]=0,通过逆向递推建立状态转移方程,可以得到以下三种情况

  1. dp[i][j]=dp[i+1][j]+1,即dp[i][j] 为在i+1时刻在第j站的所等待的时间+1
  2. dp[i][j]=min(dp[i+t[j]][j+1],dp[i][j]),即若第i时刻存在向右开的车,且此时到达下一个站的时间不大于T时,dp[i][j]为第i+t[j]时刻在第j+1站台所等待的时间与在在这个站台等待的时间点最小值
  3. dp[i][j]=min(dp[i+t[j-1]][j-1],dp[i][j]),即若第i时刻存在向左开的车,且此时到达下一个站的时间不大于T时,dp[i][j]为第i+t[j-1]时刻在第j-1站台所等待的时间与在在这个站台等待的时间点最小值

然后最终等待时间为dp[0][1],即在0时刻在1站台时等待的时间

//
// Created by Gowi on 2023/11/23.
//#include <iostream>
#include <cstring>#define maxN 100
#define MaxT 300
#define INF 1000000000using namespace std;int T, t[maxN], a[maxN], b[maxN], M1, M2, n;
int has_train[MaxT][maxN][2];// has_train[i][j][1/2] i时刻在第j个站是否有向右(0)/左(1)开的火车
int dp[MaxT][maxN]; //dp[i][j]i时刻在第j个站需要等待多长时间bool init() {int d;cin >> n;if (n == 0) {return false;}memset(t, 0, sizeof(t));memset(a, 0, sizeof(a));memset(b, 0, sizeof(b));memset(has_train, 0, sizeof(has_train));memset(dp, 0, sizeof(dp));cin >> T;for (int i = 1; i < n; ++i) {cin >> t[i];}cin >> M1;for (int i = 1; i <= M1; ++i) {cin >> a[i];d = a[i];for (int j = 1; j < n; ++j) {has_train[d][j][0] = 1;d += t[j];}}cin >> M2;for (int i = 1; i <= M2; ++i) {cin >> b[i];d = b[i];for (int j = n - 1; j > 0; j--) {has_train[d][j+1][1] = 1;d += t[j];}}return true;
}int main() {int k = 0;while (init()) {for (int i = 1; i < n; ++i) {dp[T][i] = INF;}dp[T][n] = 0;for (int i = T - 1; i >= 0; i--) {for (int j = 1; j <= n; ++j) {dp[i][j] = dp[i + 1][j] + 1; // 等待一分钟if (j < n && has_train[i][j][0] && i + t[j] <= T) { //若此时向右有车,且到达下一个站的时间不大于Tdp[i][j] = min(dp[i][j], dp[i + t[j]][j + 1]); //状态转移方程}if (j > 1 && has_train[i][j][1] && i + t[j-1] <= T) { //若此时向左有车,且到达下一个站的时间不大于Tdp[i][j] = min(dp[i][j], dp[i + t[j - 1]][j - 1]); //状态转移方程}}}cout << "Case Number " << ++k << ": ";if (dp[0][1] >= INF) {cout << "impossible" << endl;} else {cout << dp[0][1] << endl;}}return 0;
}

相关文章:

UVA1025 城市里的间谍 A Spy in the Metro

UVA1025 城市里的间谍 A Spy in the Metro 题面翻译 题目大意 某城市地铁是一条直线&#xff0c;有 n n n&#xff08; 2 ≤ n ≤ 50 2\leq n\leq 50 2≤n≤50&#xff09;个车站&#xff0c;从左到右编号 1 … n 1\ldots n 1…n。有 M 1 M_1 M1​ 辆列车从第 1 1 1 站开…...

【科普知识】什么是步进电机?

德国百格拉公司于1973年发明了五相混合式步进电机及其驱动器&#xff0c;1993年又推出了性能更加优越的三相混合式步进电机。我国在80年代以前&#xff0c;一直是反应式步进电机占统治地位&#xff0c;混合式步进电机是80年代后期才开始发展。 步进电机是一种用电脉冲信号进行…...

AWS云服务器EC2实例实现ByConity快速部署

1. 前言 亚马逊是全球最大的在线零售商和云计算服务提供商。AWS云服务器在全球范围内都备受推崇&#xff0c;被众多业内人士誉为“云计算服务的行业标准”。在国内&#xff0c;亚马逊AWS也以其卓越的性能和服务满足了众多用户的需求&#xff0c;拥有着较高的市场份额和竞争力。…...

Docker的项目资源参考

Docker的项目资源包括以下内容&#xff1a; Docker官方网站&#xff1a;https://www.docker.com/ Docker Hub&#xff1a;https://hub.docker.com/ Docker文档&#xff1a;https://docs.docker.com/ Docker GitHub仓库&#xff1a;https://github.com/docker Docker官方博客…...

wsl-ubuntu 系统端口总被主机端口占用问题解决

wsl-ubuntu 系统端口总被主机端口占用问题解决 0. 问题描述1. 解决方法 0. 问题描述 wsl-ubuntu 子系统中的服务&#xff0c;总是启动失败&#xff0c;错误信息是端口被占用。 用一些命令查看&#xff0c;被占用的端口也没有用服务启动。 1. 解决方法 运行&#xff0c; ne…...

详解自动化之单元测试工具Junit

目录 1.注解 1.1 Test 1.2 BeforeEach 1.3 BeforeAll 1.4 AfterEach 1.5 AfterAll 2. 用例的执行顺序 通过 order() 注解来排序 3. 参数化 3.1 单参数 3.2 多参数 3.3 多参数(从第三方csv文件读取数据源) 3.4 动态参数ParameterizedTest MethodSource() 4. 测试…...

超声波雪深传感器冬季里的科技魔法

在冬季的某个清晨&#xff0c;当你打开大门&#xff0c;被厚厚的积雪覆盖的大地映入眼帘&#xff0c;你是否曾想过&#xff0c;这片雪地的深度是多少&#xff1f;它又如何影响着我们的生活和环境&#xff1f;今天&#xff0c;我们将为你揭开这个谜团&#xff0c;介绍一款神秘的…...

2023年【熔化焊接与热切割】免费试题及熔化焊接与热切割模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 熔化焊接与热切割免费试题是安全生产模拟考试一点通生成的&#xff0c;熔化焊接与热切割证模拟考试题库是根据熔化焊接与热切割最新版教材汇编出熔化焊接与热切割仿真模拟考试。2023年【熔化焊接与热切割】免费试题及…...

【数据结构】—搜索二叉树(C++实现,超详细!)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;消えてしまいそうです—真夜中 1:15━━━━━━️&#x1f49f;──────── 4:18 &#x1f504; ◀️ ⏸ ▶️…...

机器人算法—ROS TF坐标变换

1.TF基本概念 &#xff08;1&#xff09;什么是TF&#xff1f; TF是Transformations Frames的缩写。在ROS中&#xff0c;是一个工具包&#xff0c;提供了坐标转换等方面的功能。 tf工具包&#xff0c;底层实现采用的是一种树状数据结构&#xff0c;根据时间缓冲并维护多个参考…...

路由VRRP配置例子

拓朴如下&#xff1a; 主要配置如下&#xff1a; [R1] interface GigabitEthernet0/0/0ip address 10.1.1.1 255.255.255.0 vrrp vrid 1 virtual-ip 10.1.1.254vrrp vrid 1 priority 200vrrp vrid 1 preempt-mode timer delay 20 # interface GigabitEthernet0/0/1ip address …...

OpenGL 绘制点与三角形(Qt)

文章目录 一、简介二、实现代码三、实现效果一、简介 这里对OpenGL中点与三角形相关绘制操作进行封装,方便后续点云数据与模型数据的渲染。 二、实现代码 这里我们先创建一个基类Drawable,后续的点、线、面等,均会继承该类: Drawable.h #ifndef DRAWABLE_H #define DRAWABL…...

究竟什么是阻塞与非阻塞、同步与异步

文章目录 前言阻塞与非阻塞同步与异步复杂的网络IO真正的异步IOIO分类与示例总结 前言 这几个名词在程序开发时经常听到&#xff0c;但是突然问起来各个词的含义一时间还真是说不清楚&#xff0c;貌似这几个词都是翻译过来的&#xff0c;每个人的解释都不太一样&#xff0c;我…...

Openlayer【三】—— 绘制多边形GeoJson边界绘制

1.1、绘制多边形 在绘制多边形和前面绘制线有异曲同工之妙&#xff0c;多边形本质上就是由多个点组成的线然后连接组成的面&#xff0c;这个面就是最终的结果&#xff0c;那么这里使用到的是Polygon对象&#xff0c;而传给这个对象的值也是多个坐标&#xff0c;坐标会一个个的…...

用SOLIDWORKS画个高尔夫球,看似简单的建模却大有学问

SOLIDWORKS软件提供了大量的建模功能&#xff0c;如果工程师能灵活使用这些功能&#xff0c;就可以绘制得到各式各样的模型&#xff0c;我们尝试使用SOLIDWORKS绘制高尔夫球模型&#xff0c;如下图所示。 为什么选用solid works进行建模&#xff1f; solid works是一款功能强大…...

Linux:Network: ARP被动删除的一个情况

今天看到Linux内核里arp代码相关的一个函数,让人想起来很久之前掉进去的一个坑。 说产品的实现里,会存放一个dummy的neighbor(arp记录)在系统里,然后根据这个dummy的记录做一些特殊的处理。 但是当时根本就不知道这个记录的存在,也就无从谈起说要在做设计时考虑它的存在。…...

『接口测试干货』| Newman+Postman接口自动化测试完整过程

『接口测试干货』| NewmanPostman接口自动化测试完整过程 1 Newman简介2 如何安装Newman&#xff1f;2.1 安装NodeJs2.2 安装Newman2.2 解决Newman不是内部命令 3 Newman使用3.1 Newman如何运行集合&#xff1f;3.2 如何查看帮助文档&#xff1f;3.3 环境变量设置3.4 关于全局变…...

根据商品链接获取拼多多商品详情数据接口|拼多多商品详情价格数据接口|拼多多API接口

拼多多&#xff0c;作为中国最大的社交电商之一&#xff0c;为卖家提供了丰富的商品详情接口。这些接口可以帮助卖家快速获取商品信息&#xff0c;提高销售效率。本文将详细介绍如何使用拼多多商品详情接口&#xff0c;以及它的优势和注意事项。 一、拼多多商品详情接口概述 …...

KaiwuDB 监控组件及辅助 SQL 调优介绍

一、介绍 KaiwuDB 具备完善的行为数据采集功能&#xff0c;此功能要求 KaiwuDB 数据库系统 C/E/T 端不同进程的不同维度的指标采集功能十分完善&#xff1b;在不同进程完成指标采集后&#xff0c;会通过 Opentelemetry 和 Collector 将指标存入 Prometheus&#xff0c;以便查找…...

双11再创新高!家电行业如何通过矩阵管理,赋能品牌增长?

双11大促已落下帷幕&#xff0c;虽然今年不再战报满天飞&#xff0c;但从公布的数据来看&#xff0c;家电行业整体表现不俗。 根据抖音电商品牌业务发布的收官战报&#xff0c;家电行业创造了成交新纪录&#xff0c;整体同比增长125%。快手官方数据显示&#xff0c;消电家居行业…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

《Offer来了:Java面试核心知识点精讲》大纲

文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...