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

news2025/1/12 16:01:53

 实际上这题就是问Mario最少的总等车时间

这题我的做法是

把一个火车从左到右(或从右到左) 的过程

转化成

途中任何车站到左边(或右边)相邻车站 的过程

相当于把他切成了一段一段

(一段就是两个相邻车站中间的部分)

这样更容易操作

具体请看代码

一些注释代码里请往下看

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int Time = 205, N = 55;

bool has_train[20 * N][N][2];
int dp[Time][N], t[N];

int main() {
	int n, T, Case;
	Case = 0;
	while (scanf ("%d", &n), n) {
		memset(t, 0, sizeof t);
		memset(has_train, false, sizeof has_train);
		scanf ("%d", &T);
		int tmp = 0;
        //t[i] : 从第i个车站 ~ 第i+1个车站 耗费的时间 (反向也是)
		for (int i = 1; i < n; i ++)
			scanf ("%d", &t[i]);
		int ml, mr;
        //ml 是从第一站向右开的火车的发班时间
		scanf ("%d", &ml);
        //下面两个while是用来编写has_train的  具体has_train的意义下面会讲
		while (ml --) {
			int di;
			scanf ("%d", &di); //发班时间
			int time = di;
			for (int k = 1; k <= n; k ++)
				has_train[time += t[k - 1]][k][0] = true; //向右
		}
        //mr 是从最后一站向左开的火车的发班时间
		scanf ("%d", &mr);
		while (mr --) {
			int di;
			scanf ("%d", &di); //发班时间
			int time = di;
			for (int k = n; k >= 1; k --)
				has_train[time += t[k]][k][1] = true; //向左
		}

		/*
		dp(i,j) 第i个时刻在第j个车站 最少等的总时间

		三种情况:
			1). 等一分钟
				dp(i,j) = dp(i+1,j) + 1;
			2). 坐往右开的车(如果有)
				dp(i,j) = dp(i+t[j],j+1)
			3).	坐往左开的车(如果有)
				dp(i,j) = dp(i+t[j-1],j-1)
			三个状态去一个min

		所有初始化成一个0x7f7f7f7f (及无解)
		dp(T,n)=0;

        has[i][j][sign] : 第i个时刻第j个车站是否有向右(sign == 0)或左(sign == 1)的车
		*/
		for (int i = 1; i < n; i ++)
			dp[T][i] = 0x7f7f7f7f;
		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) //向右
					dp[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) //向左
					dp[i][j] = min(dp[i][j], dp[i + t[j - 1]][j - 1]);
			}
		}

		int ans = dp[0][1];
		printf ("Case Number %d: ", ++ Case);
		if (ans < 0x7f7f7f7f)
			printf ("%d\n", ans);
		else
			printf ("impossible\n");
	}
	return 0;
}

题目传送门:UVA1025 城市里的间谍

制作不易,留个赞再走吧

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

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

相关文章

.netcore下grpc概述

一、什么是grpc 是一种与语言无关的高性能远程过程调用 (RPC) 框架。基于http/2标准设计&#xff0c;提供了头部压缩、tcp连接上的多路复用、流量控制、流式处理&#xff08;客户端流/服务端流/双向流&#xff09;。提供统一使用的.proto文件&#xff0c;它定义 grpc 服务和消…

屏幕录制app分享,总有适合你的一款

在现今的互联网时代&#xff0c;屏幕录制已经成为了一项必备的技能。然而&#xff0c;要想将自己的屏幕录制下来并分享给别人&#xff0c;就需要一款好用的屏幕录制app。市面上有许多不同的屏幕录制app&#xff0c;每个人的需求也各不相同。本篇文章就将为大家推荐几款适合不同…

技术应用:Docker安全性的最佳实验|聊聊工程化Docker

&#x1f525; 技术相关&#xff1a;《技术应用》 ⛺️ I Love you, like a fire! 文章目录 首先&#xff0c;使用Docker Hub控制访问其次&#xff0c;保护密钥写在最后 不可否认&#xff0c;能生存在互联网上的软件都是相互关联的&#xff0c;当我们开发一款应用程序时&#x…

好用的Windows 10磁盘管理工具

​前几天&#xff0c;我给我用的戴尔笔记本电脑装上了全新的SSD&#xff0c;并准备将所有除Windows操作系统以外的数据&#xff0c;特别是游戏&#xff0c;全部转移到SSD上&#xff08;主要是因为这样能加快游戏的加载速度&#xff09;。但在我尝试用Windows 10自带的磁盘管理操…

树莓派4B, Purple Pi, Orange Pi 3B对比

1 参数 树莓派4BPurple Pi OHOrange Pi 3BSOCBroadcom BCM2711RockChip 3566RockChip 3566CPUARM Cortex-A72 四核1.5GHz主频ARM Cortex-A55 四核 2.0GHz主频ARM Cortex-A55 四核 2.0GHz主频GPU支持OpenGL ES 3.0 graphicsMali-G52 1-Core-2EE 支持 OpenGL ES 1.1/2.0/3.2&…

Python操作MySQL将数据库表中的数据导出到excel

Author: liukai 2810248865qq.com Date: 2022-08-18 04:28:52 LastEditors: liukai 2810248865qq.com LastEditTime: 2023-06-29 09:35:25 FilePath: \PythonProject01\Python操作MySQL数据库及excel将数据库表中的数据导出到excel中.py Description: 这是默认设置,请设置custo…

独立站如何进行Facebook广告投放?关于广告投放策略的真相

谷歌广告是独立站卖家推广引流的首选渠道&#xff0c;那么谷歌广告该如何投放&#xff1f;在这个过程中有哪些需要特别注意的吗&#xff1f; 创建Facebook广告账户&#xff1a; 访问Facebook广告管理平台&#xff08;Ads Manager&#xff09;并创建一个广告账户。您需要提供一…

Android 数据库之GreenDAO

GreenDAO 是一款开源的面向 Android 的轻便、快捷的 ORM 框架&#xff0c;将 Java 对象映射到 SQLite 数据库中&#xff0c;我们操作数据库的时候&#xff0c;不再需要编写复杂的 SQL语句&#xff0c; 在性能方面&#xff0c;greenDAO 针对 Android 进行了高度优化&#xff0c;…

dy六神参数记录分析(立秋篇)

version&#xff1a; 23.9 X-SSSTUB: 搜索&#xff1a;x-tt-dt var hashMap Java.use("java.util.HashMap");hashMap.put.implementation function (a, b) {console.log("hashMap.put: ", a, b);return this.put(a, b);}https://codeooo.blog.csdn.n…

分享一下Steam搬砖常规操作

大家好&#xff0c;我是阿阳&#xff0c;接下来我们会陆续更新一些Steam搬砖项目的操作课程&#xff0c;大家可以自行学习&#xff0c;希望对正在操作的朋友&#xff0c;有一定的帮助。 steam平台&#xff0c;对于大多数游戏玩家应该再清楚不过了&#xff0c;玩过pubg&#xf…

资深测试老鸟整理,性能测试-常见调优详细,卷起来...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 常见的一些性能缺…

【数据结构】单链表OJ题

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;数据结构 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、移除链表元素 &#x1f4a1;方法一&#xff1a; &#x1f4a1;方法二…

活动发布会邀请媒体6步走

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 邀请媒体参加活动发布会对信息的传播&#xff0c;企业品牌建设有诸多的好处&#xff0c;今天就与大家分享下邀请媒体参加活动报道的6个步骤&#xff1a; 1. 策划与准备&#xff1a; -明…

南卡携手傅园慧,破圈背后开辟了全新营销方法

南卡官宣了&#xff01;新品牌大使是傅园慧&#xff01;在极短时间内&#xff0c;该消息迅速登上各平台热搜&#xff0c;并且在抖音等社交平台上也引起了强烈的共振。 一直以来&#xff0c;耳机行业由于本身经营的是耐消品&#xff0c;因此在推广大使的选择上始终持谨慎且保守的…

山东布谷科技直播系统源码热点分析:不同芯片实现高质量编码与渲染视频的GPU加速功能

在现代科技的迅猛发展下&#xff0c;直播系统源码平台被开发搭建出来&#xff0c;为人们的生活方式带来了很大的改变&#xff0c;直播系统源码平台的好友、短视频、直播、社区等功能让很多人越来越热衷于去在平台上刷视频、看直播、分享生活。用户的喜爱也督促了直播系统源码平…

【EI/SCOPUS征稿】第三届电子通信与计算机科学技术国际学术会议(ECCST 2023)

第三届电子通信与计算机科学技术国际学术会议&#xff08;ECCST 2023&#xff09; 2023 3rd International Conference on Electronic Communication,Computer Science and Technology 2023年电子通信与计算机科学技术国际学术会议定于2023年9月15-17日在中国上海举行。会议旨…

opencv基础-34 图像平滑处理-双边滤波cv2.bilateralFilter()

双边滤波&#xff08;BilateralFiltering&#xff09;是一种图像处理滤波技术&#xff0c;用于平滑图像并同时保留边缘信息。与其他传统的线性滤波方法不同&#xff0c;双边滤波在考虑像素之间的空间距离之外&#xff0c;还考虑了像素之间的灰度值相似性。这使得双边滤波能够有…

MyBatis简介及环境配置

文章目录 一、什么是MyBatis二、MyBatis开发环境配置1.创建数据库表2.添加MyBatis框架支持3.配置连接字符串和MyBatis4.添加业务代码流程 一、什么是MyBatis MyBatis是一种持久层框架&#xff0c;也是一种ORM框架&#xff08;Object Relational Mapping即对象关系映射&#xf…

SSM个人博客项目

文章目录 SSM个人博客系统实现项目介绍 一、准备工作0. 创建项目添加对应依赖1. 数据库设计2. 定时实体类 二、功能实现1.统一功能处理统一返回格式统一异常处理定义登录拦截器 2. 注册登录实现生成获取验证码密码加盐实现注册功能登录功能注销功能 3.登录用户博客列表获取登录…