UVA1025---A Spy in the Metro(简单dp)

城市里的间谍(A Spy in the Metro UVa 1025)最详细题解 题的核心是逆推的思想这道题一看要问最少需要等待多少时间,自然会想到用dp,那么怎么来处理这个问题呢?我们可以用dp[i][j]来表示时刻i,你现在身处第j个站,最少还需要等待多长时间,我们所知的是,在T时刻,你人一定需要在第n个车站去完成间谍任务,所以dp[T][n]=0;可以由这个位置来进行反推,比如我在时刻T-1可以仍然位于车站n或者说如果有往左开的车我就有选择往左坐车的可能; 那么我们对于一 阅读详情

dp[i][j]表示时刻i,在车站j,等待的最少时间
有3种方案:
等一分钟
往左搭车
往右搭车

/*************************************************************************
    > File Name: uva1025.cpp
    > Author: ALex
    > Mail: zchao1995@gmail.com 
    > Created Time: 2015年05月25日 星期一 19时05分09秒
 ************************************************************************/

#include <functional>
#include <algorithm>
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <map>
#include <bitset>
#include <set>
#include <vector>

using namespace std;

const double pi = acos(-1.0);
const int inf = 0x3f3f3f3f;
const double eps = 1e-15;
typedef long long LL;
typedef pair <int, int> PLL;

int dp[220][55];
int t_use[55];
vector <int> go[220][55];

int main() {
    int n, T, icase = 1, times;
    while (~scanf("%d", &n), n) {
        scanf("%d", &T);
        int m1, m2; // m1 : L to R, m2 : R to L
        for (int i = 1; i <= n - 1; ++i) {
            scanf("%d", &t_use[i]);
        }
        for (int i = 0; i <= T; ++i) {
            for (int j = 1; j <= n; ++j) {
                go[i][j].clear(); // time = i, station = j
            }
        }
        scanf("%d", &m1);
        for (int i = 1; i <= m1; ++i) {
            scanf("%d", &times);
            int t = times;
            if (t > T) {
                continue;
            }
            go[t][1].push_back(i);
            for (int j = 1; j <= n - 1; ++j) {
                t += t_use[j];
                if (t > T) {
                    break;
                }
                go[t][j + 1].push_back(i);
            }
        }
        scanf("%d", &m2);
        for (int i = 1; i <= m2; ++i) {
            scanf("%d", &times);
            int t = times;
            if (t > T) {
                continue;
            }
            go[t][n].push_back(i + m1);
            for (int j = n - 1; j >= 1; --j) {
                t += t_use[j];
                if (t > T) {
                    break;
                }
                go[t][j].push_back(i + m1);
            }
        }
        for (int i = 0; i <= T; ++i) {
            for (int j = 1; j <= n; ++j) {
                dp[i][j] = inf;
            }
        }
        dp[0][1] = 0;
        for (int i = 0; i < T; ++i) {
            for (int j = 1; j <= n; ++j) {
                if (dp[i][j] == inf) {
                    continue;
                }
                int size = go[i][j].size();
                dp[i + 1][j] = min(dp[i + 1][j], dp[i][j] + 1);
                for (int k = 0; k < size; ++k) {
                    int u = go[i][j][k];
                    if (u <= m1 && j < n) {
                        if (i + t_use[j] <= T) {
                            dp[i + t_use[j]][j + 1] = min(dp[i + t_use[j]][j + 1], dp[i][j]);
                        }
                    }
                    else if (j > 1 && u > m1) {
                        if (i + t_use[j - 1] <= T) {
                            dp[i + t_use[j - 1]][j - 1] = min(dp[i + t_use[j - 1]][j - 1], dp[i][j]);
                        }
                    }
                }
            }
        }
        int ans = inf;
        for (int i = 0; i <= T; ++i) {
            if (dp[i][n] == inf) {
                continue;
            }
            ans = min(ans, dp[i][n] + T - i);
        }
        if (ans == inf) {
            printf("Case Number %d: impossible\n", icase++);
        }
        else {
            printf("Case Number %d: %d\n", icase++, ans);
        }
    }
    return 0;
}
有源滤波电路设计 目录一、低通滤波器1、同相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(压控电压源;Sallen-Key)2、反相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(无限增益多路反馈)二、高通滤波器1、同相输入高通滤波器(1)一阶高通滤波电路(2)二阶高通滤波电路(压控电压源;Sallen-Key)2、反相输入高通滤波电路(1)二阶高通滤波电路(无限增益多路反馈) 一、低通滤波器 1、同相输入低通滤波器 (1)一阶低通滤波电路 即在一阶无源低通滤波器的基础上,加了一个集成运放。 它的 阅读详情

相关推荐

Labview 机器视觉(4)之 图像处理进阶 - 动态ROI与批量保存

本文深入探讨了LabVIEW机器视觉中动态ROI与批量保存两大进阶技术。动态ROI通过模式匹配或粒子分析实现检测区域的自动追踪,解决了产品位置变化带来的挑战。同时,文章详细介绍了如何设计高效的文件命名规则与异步保存机制,以实现海量图像数据的批量保存与管理,从而构建稳定、高效的工业自动化检测系统。

weixin_29234423的博客 219

★UVa 1025---A Spy in the Metro 题解 (简单dp)

https://vjudge.net/problem/UVA-1025 题意:一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你恰好在时间T到达n,并且等车时间最短,输出最短等车时间。 思路:先用一个L[][]来表示在t时刻,在车站i,是否有往右开的车。同理,R[][]用来保存是否有往左开的车。          用d(i,j)表示时刻i,你在

K键盘里的青春K 1373

NSIDC海冰运动产品-速度矢量场图绘制(数据下载和处理--年、季节平均)【python/basemap】

入门级NSIDC海冰运动产品速度矢量场图绘制(数据下载和处理--年、季节平均)【python/basemap】

Mluoo的博客 2959

UVA 1025 A Spy in the Metro - 简单dp

题目描述分析:关键信息:车站,时刻 dp[j][i] :在j时刻,正处在i车站,需要等待的最短时间。 dp[j][i]=min{ (1). dp[j-1][i]+1 |等待1分钟 , (2). dp[j-cost(i+1,i)][i+1] |在j-cost(i+1,i)有i+1到i的车, (3).

yuanxinyu402的博客 382

Clion+platformIO开发ESP32时找不到lib文件中引入第三方库的头文件(头文件下有波浪线),实际编译是成功的解决方法

Clion+platformIO开发ESP引入第三方库文件编译器无法找到.h文件但编译成功

zs5218的博客 1852

产品经理如何运用AI提升工作效率

AI技术的应用为产品经理的工作流程带来了显著的效率提升。从需求收集到产品上线,AI可以在多个阶段提供智能化支持,帮助产品经理更好地理解用户需求、优化产品设计、提高开发和测试效率。在未来,随着AI技术的不断发展,产品经理将能够更加高效地管理产品生命周期,为用户提供更优质的产品体验。应用 | AI + 千行百业欢迎关注我的后续博文,我将分享更多关于人工智能、自然语言处理和计算机视觉的精彩内容。

不想宅的冷同学 1337

UVA 1025 A Spy in the Metro (简单DP)

#include <bits/stdc++.h>#define INF 0x3f3f3f3f #define eps 1e-6 typedef long long LL; const double pi = acos(-1.0); const long long mod = 1e9 + 7; using namespace std;const int MAXN = 55; const int MAX

Accepted丶 544

《YOLOv12魔术师专栏》专栏介绍 & 专栏目录

《YOLOv12魔术师专栏》专栏介绍 & 专栏目录

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 5059

UVA 1025 A Spy in the Metro DP

DP[ i ][ j ] 在 i 时刻 j 号车站的等待最小时间..... 有3种可能: 在原地等,坐开往左边的车,做开往右边的车 A Spy in the Metro Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu S

码代码的猿猿 3007

在SAP系统中,公司间关联交易(Intercompany Transactions)或内部往来主要有三种经典的实现模式。这些模式的选择取决于企业的业务复杂度、自动化需求以及对实时性的要求

SAP系统中公司间关联交易的三种实现模式分析:1)手工记账模式(FB60/FB70)适用于低频交易,灵活性高但易出错;2)SD/MM跨公司销售采购模式(VA01/VF01/ME21N)适用于真实业务流转,业务财务集成度高;3)自动清算模式(F.13/ICR)适合高频交易集团企业,支持实时自动对账。关键成功要素包括正确配置贸易伙伴字段、统驭科目及专用凭证类型。建议根据企业规模、业务复杂度及自动化需求选择合适模式,其中大型集团优先考虑自动对账方案以确保合并报表准确性。

金牌架构师 557

「深度学习之优化算法」笔记(二)优化算法的分类

但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?

quanzhan_King的博客 1371

A Spy in the Metro

UVA1025 定义:dp[i][j]dp[i][j]dp[i][j]为在第iii时刻间谍到达第j个车站时在车站待的最短时间,RightTrain[i][j]RightTrain[i][j]RightTrain[i][j]表示在第iii时刻是否有从左向右开的列车,LeftTrain[i][j]LeftTrain[i][j]LeftTrain[i][j]同理。 初始化:dp[0][1]=0dp[0...

蒟蒻的博客 1678

【APM】在Kubernetes中搭建OpenTelemetry+Loki+Tempo+Grafana链路追踪(实战一,Loki日志中查看链路追踪数据)

这对于那些不能直接控制 JVM 启动参数的应用特别有用,比如通过 JNI (Java Native Interface) 调用 JVM 的应用、脚本中嵌入的 JVM 应用,或者一些服务管理工具自动启动的服务。这为用户提供了一个灵活的架构,可以根据需要选择最适合自己的追踪解决方案,或者根据环境(如开发、测试、生产)的不同配置不同的后端。: OpenTelemetry SDK 提供了丰富的特性,如自动追踪上下文传播、手动追踪跨度的创建与关联、标签和事件的添加等,使得追踪数据更加丰富和有用。

CN_Eden 3241

UVA-1025 A Spy in the Metro(多决策dp)

uva-1025 A Spy in the Metro 题目 某城市的地铁是线性的,有n(2≤n≤50)个车站,从左到右编号为1~n。有M1辆列车从第1站开始往右开,还有M2辆列车从第n站开始往左开。在时刻0,Mario从第1站出发,目的是在时刻T(0≤T≤200)会见车站n的一个间谍。在车站等车时容易被抓,所以她决定尽量躲在开动的火车上,让在车站等待的总时间尽量短。列车靠站停车时间忽略不计,且M...

Stormjing的博客 241

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

UVa 1025 - A Spy in the Metro

题目链接 UVa 1025 A Spy in the Metro 问题描述 Secret agent Maria was sent to Algorithms City to carry out an especially dangerous mission. After several thrilling events we nd her in the rst station

Dextrad_ihacker的博客 858

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

A Spy in the Metro UVA - 1025 dp

题目链接:https://vjudge.net/problem/UVA-1025 紫书P268 书上是按照T从大到小 题意:第一行输入n,为n个车站,第2行为T,第三行表示从i到i+1车站所需时间,下面两行表示从1号车站向右走到n号车站有多少班车以及出发时间,最后两行表示从n号到1号的车出发时间,求在时间T到达n号车站在车站等待的最少时间。 思路:dp【i】【j】表示在第i分钟j号车站已经等待的...

A 261

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

UVA1025(A Spy in the Metro) DAG上的动态规划

UVA1025(A Spy in the Metro) DAG上的动态规划 考虑到等待的时间只与所在的车站和时间有关,设状态方程为dp[i][j]表示在i时刻j车站最少需要等待的时间。 显然,dp[t][n]为0,因为要区分出不可能到达的情况,所以初始化dp[t]i为INF。 接下里考虑状态转移的策略: 1、原地等待1分钟。 2、如果有向左开的地铁,乘坐。 3、如果有向右开的地铁,乘坐。 这三种策略对应的状态转移方程为: 1、dp[i[[j]=min(dp[i][j],dp[i+1][j]+1) 2、dp[

WedsonLin的博客 248

UVA1025 A Spy in the Metro —— DP

题目链接:https://vjudge.net/problem/UVA-1025 题解: 详情请看紫书P267。 与其说是DP题,我觉得更像是模拟题,特别是用记忆化搜索写。 递推: #include <iostream> #include <cstdio> #include <cstring> #incl...

alince20008的博客 159

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

某城市地铁是一条直线,有n2≤n≤50)个车站,从左到右编号1n。有M1​辆列车从第1站开始往右开,还有M2​辆列车从第n站开始往左开。列车在相邻站台间所需的运行时间是固定的,因为所有列车的运行速度是相同的。在时刻0,Mario 从第1站出发,目的在时刻T0≤T≤200)会见车站n的一个间谍。在车站等车时容易被抓,所以她决定尽量躲在开动的火车上,让在车站等待的时间尽量短。

Gowi的博客 1461

UVa 1025 A Spy in the Metro(DP)

题意  某城市的地铁有n个车站 编号1到n  有m1辆车向右开 给出m1个从车站1出发的时间  m2辆车向左开  给出m2个从车站n出发的时间  t[i]为火车从第i个车站开到第i+1(或相反)个车站需要的时间   Maria在车站1 她需要恰在时刻T到达第n个车站  求她的最小总车站等待时间 基础的多阶段决策DP  令d[i][j]表示时刻j在i号车站剩下的最小总等待时间 每种状态有3种选择

Deng's site \# 2033

UVa1025 - A Spy in the Metro(DP)

UVa1025 - A Spy in the Metro   题意:一直线上有n个车站,火车是双向移动的,给定第i个车站到第i+1个车站的时间,1 分析:刚开始一直没看懂题目的意思,后面参考了下紫书,影响状态的只有所在车站和所处时间,定义dp[i][j]为i时刻在j号车站总共等待的最小时间。决策是很明显的:在车站等待,坐上往左开的车,坐上往右开的车(如果有的话),那么只需要记录火车的细节,直

我的ACM,我的梦!!! 422

A Spy in the Metro(DAG上的动态规划)UVA - 1025

原题链接: https://vjudge.net/problem/UVA-1025 测试样例 Sample Input 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 Sample Output Case Number 1: 5 Case Number 2: 0 Case Number 3: impossible 题意: ..

pursuit的博客 447

UVA1025 A Spy in the Metro

UVA1025 A Spy in the Metro 题目链接 刚开始接触DP题,感觉还是有一定的难度,在这里再理一遍思路。 DP的核心就是状态和状态转移方程 首先状态的确定就是找到影响当前决策的因素,本题是当前时间和所处车站两个,所以可以用d[i][j]表示i时刻在j站最少还要等待的时间。 其次是状态转移方程,取决于决策的形式,本题主要有以下三种决策: 1.在当前车站等待一分钟。 2.搭乘向右开的车。 3.搭乘向左开的车。 找出决策后即可列出相对应的状态转移方程。 1.dp[i][j]=min(dp[i]

polarday的博客 266

uva1025 a spy in the metro

动态规划

YHaX的博客 668

【算法竞赛入门经典例题题解】 【DP】练习城市里的间谍 A Spy in the Metro UVA1025 UVA437 巴比伦塔 刘汝佳

【算法竞赛入门经典例题题解】 【DP】 UVA1025 练习城市里的间谍 A Spy in the Metro 洛谷链接 UVA1025 练习城市里的间谍 A Spy in the Metro 题目 某城市地铁是一条直线,有 nn(2\leq n\leq 502≤n≤50)个车站,从左到右编号 …n。有 M1辆列车从第 1 站开始往右开,还有 M2 辆列车从第 n 站开始往左开。列车在相邻站台间所需的运行时间是固定的,因为所有列车的运行速度是相同的。在时刻 0,Mario 从第 1 站出发,目的在时刻 T(

csxylrf的博客 304

UVA1025——A Spy in the Metro【dp】

题目链接:https://cn.vjudge.net/problem/UVA-1025 题目大意:Mario从第1站出发,目的是在时刻T会见车站 nnn 的一个间谍。由于在车站等待容易被抓,所以应尽量躲在开动的火车上,即在车站等待的时间最短,且Mario十分敏捷,及时两辆方向不同的列车在同一时间停靠,她也能完成换乘。 输入的第1行为 n(2≤n≤50)n(2 \le n \le 50)n(2≤n≤...

C++的星空 191
上一篇: hdu4825---Xor Sum(Trie + 贪心)
下一篇: UVA1347---Tour(dp,双调TSP)
tokers
博客等级 码龄12年 71粉丝 700原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值