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

华为od 面试八股文_Android安卓_05_含答案 阅读详情

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[i][j]=min(dp[ i + ti[j-1] ][j-1],dp[i][j])
3、dp[i][j]=min(dp[ i+ ti[j] ][j+1],dp[i][j])
其中ti[j[为j车站与j+1车站的时间间隔。

时间复杂度O(Tn)

#include<bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
int n,t;
int ti[55];
int m1;
int m1_t[55];
int m2;
int m2_t[55];
int a[55][55];//从左向右 
int b[55][55];//从右向左 
int dp[205][55];
bool has_train[205][55][2];//0向右,1向左 ,在i时刻,j站点有车 
void init(void)
{
	memset(has_train,false,sizeof(has_train));
	int sum=0;
	for(int i=1;i<=n-1;i++)
	{
		for(int j=0;j<m1;j++)
		if(m1_t[j]+sum<=t)has_train[m1_t[j]+sum][i][0]=true;
		sum+=ti[i];
	}
	sum=0;
	for(int i=n;i>1;i--)
	{
		for(int j=0;j<m2;j++)
		if(m2_t[j]+sum<=t)has_train[m2_t[j]+sum][i][1]=true;
		sum+=ti[i-1];
	}
}
void solve(void)//填表法 
{
	init();
	for(int i=1;i<=n;i++)dp[t][i]=INF;
	dp[t][n]=0;
	for(int i=t-1;i>=0;i--)//time
	for(int j=1;j<=n;j++)//station
	{
		dp[i][j]=dp[i+1][j]+1;
		if(j!=1&&i+ti[j-1]<=t&&has_train[i][j][1]){//向左走
			dp[i][j]=min(dp[i+ti[j-1]][j-1],dp[i][j]);
		}
		if(j!=n&&i+ti[j]<=t&&has_train[i][j][0]){//向右走 
				dp[i][j]=min(dp[i+ti[j]][j+1],dp[i][j]);
		}
	}
	if(dp[0][1]>=INF)printf("impossible\n");
	else printf("%d\n",dp[0][1]);
}
int main(void)
{
//	freopen("out.txt","w",stdout);
	int z=1;
	while(~scanf("%d",&n)&&n)
	{
		scanf("%d",&t);
		for(int i=1;i<=n-1;i++)
		scanf("%d",&ti[i]);
		scanf("%d",&m1);
		for(int i=0;i<m1;i++)
		scanf("%d",&m1_t[i]);
		scanf("%d",&m2);
		for(int i=0;i<m2;i++)
		scanf("%d",&m2_t[i]);
		printf("Case Number %d: ",z++);
		solve();
	}
//	fclose(stdout);
}

从dp[t][n]开始递推,在ti时刻所发生的事件只能影响到t>ti的事件,所以在递推的过程中,ti时刻的事件至于t>ti某个事件有关。
我一开始想采用刷表法的思想,即对于每个dp[i][j],要找到依赖当前状态的所有状态,即找到某个t<i的事件,去刷新那个状态的dp方程,但是对于这个题目。这种方法不如填表法来的直接,因为很容易找到当前状态所依赖的状态,但是相对麻烦去找到依赖当前状态的状态(有点拗口)。

YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程 通过本教程,我们完整地学习了如何使用YOLO11-pose进行关键点检测任务的训练。从数据标注、格式转换到模型训练和评估,每个步骤都提供了详细的代码和说明。更高的精度:随着算法改进,关键点检测的精度将进一步提高实时性能:模型优化将使实时高性能关键点检测成为可能多模态融合:结合深度信息、热成像等多模态数据提升检测能力领域自适应:模型能够更好地适应不同场景和领域希望本教程能够帮助你在自己的项目中成功应用YOLO11-pose进行关键点检测。如果你有任何问题或建议,欢迎在评论区留言讨论! 阅读详情

相关推荐

FPGA,关于安装使用libero IDE V9.2 及其gold floating license配置

3、license安装根据,下面的提示进行,跟随setting up the license server on a host教程操作。1、从官网下载Libero IDE v9.2(如下图中的Libero IDE v9.2 software)4、下载完成license解压包后还需要下载 Daemons license ,地址如下。(2)第一行并不是在内填写,而是直接用您电脑名替换掉(1)修改license.bat前四行是,其务必保持和案例位置相同(避免出错)............

JasonK的博客 4296

UVA1025题解——简单DP之多决策问题

题目链接:UVA-1025 题意: 给定n个车站,时间T,列车从车站i到车站i+1需要的时间t[i]。给定M1辆从车站1驶往车站n的列车发车时间,以及M2辆从车站n驶往车站1的列车发车时间。皮皮怪初始在车站1,要在T时刻到达车站n,问他至少要在车站等多久——车在车站停留时间忽略不计,并且假设皮皮怪特别敏捷,两辆车同时到车站他也能完成换乘,如果T时刻不可能在车站n就输出impossible。 ...

阿飝的博客 589

STM32解析航模遥控器的PPM信号

使用STM32对航模遥控器的PPM信号进行解析

qq_44343584的博客 9734

UVA - 1025 A Spy in the Metro

题目链接 你要在T时间到n车站见间谍,同时保证在车站上等待的时间最少。 用dp[i][j]表示在时刻i在车站j还要等待的时间。那么dp[T][n]=0(已经到了目的地不需要等待)。然后从后往前推,每个时刻有三种决策:等一分钟、坐向右的车、坐向左的车。因为只要求时间最短,把几种可能里面的最小值记录下来就好。 注意输入数据的处理。 AC代码: #include &lt;iostream&g...

这是一个博客 183

离线语音识别模块LD3320实战:如何低成本给STM32设备加上‘耳朵’和‘嘴巴’?

本文详细介绍了如何为STM32设备集成LD3320离线语音识别模块,实现低成本语音交互方案。从硬件连接到STM32底层驱动实现,再到指令训练与词条优化技巧,完整解析了唤醒词检测与自定义指令识别的全过程。LD3320作为非特定人声识别芯片,无需网络连接,适用于智能家居、工业控制等场景,是嵌入式开发者的理想选择。

weixin_30906185的博客 555

OpenWrt南京电信PPPoE IPv6配置:从零搭建稳定双栈网络

本文详细指导如何在南京电信PPPoE宽带环境下,为OpenWrt路由器配置稳定的IPv6双栈网络。核心在于正确设置WAN6接口为DHCPv6客户端,并请求/60前缀,同时配置LAN口分发地址并放行防火墙关键流量,确保内网设备获得原生IPv6连接。

water的专栏 1339

uva1025 动态规划

这道题的边界是dp(T,N)=0,状态dp(i,j)表示在时间i、第j个车站最少等待时间,有三个决策:1、等1分钟 2、如果有向左的车,向左 3、若果有向右的车,向右 转移方程就是dp(i,j)=min(dp(i+1,j),dp(i+t[j],j+1),dp(i+t[j-1],j-1)) AC代码: #include<cstdio> #include<cstring>...

weixin_30736301的博客 181

安卓手机游戏《英雄迷宫冒险》存档修改

警告 修改前务必备份存档文件夹。该游戏有自动删除存档的功能,有问题的存档会自动删除。 修改对应的游戏版本为1.5。 存档保存位置 内部存储\Android\data\com.xmmf.yxmgmx.taptap\files 该文件夹中文件如下: data.wsf:数据文件。 wsfSave0:第一个存档。 wsfSave1:第二个存档。 修改金钱的例子 先进游戏确认当前金钱数量。当前金钱是2498,然后退出游戏。 根据金钱数量计算出存档中的内容。2498的十六进制是9C2,存档中的内容在存档中搜索该数

番茄鸡蛋的专栏 9360

UVA-1025(dp)

A Spy in the Metro UVA - 1025 问题说明: 输入输出说明: 思路: 初始化havetrain三维数组,每输入一个d,就遍历n个车站的是否拥有车情况(true为有车,false为没车); 状态转移:(倒着推~) dp[i][j]代表i时刻在j车站已经等待的时间; 1)没车,在当前车站等一分钟 dp[i][j]=dp[i+1][j]+1; 2)i时刻j车站有向右走的车; if(j<n&&i+tim[j]<=t&&havetrain[i

雪岩的博客 386

uniapp - 强力解决 swiper 轮播图内嵌套视频导致滑动不流畅卡顿问题,轮播滑块视图容器里既有图片也有视频video组件共同存在出现滑动切换特别卡,轮播组件包裹视频播放器加载慢及层级过高解决

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,swiper,轮播图,轮播图嵌套视频,卡顿,加载慢,左右滑动不流畅,很卡,滑动过快就会卡住,uniapp使用swiper组件里嵌套视频与图片如何解决卡顿问题,详细解决教程,swiper里有视频video,播放器,视频+图片轮播,层级过高及卡顿问题,没等看完视频就自动切换了,报错,无法加载播放,uniapp的App安卓苹果端,video老是加载,APP端video组件播放视频卡顿,抖音,快手,上下滑动视

🏆 前端领域优质创作者 1万+

详解vit_base_patch16_224

ViT-Base模型的核心思想是将输入图像划分为多个小块(patches),并使用Transformer架构来处理这些小块。具体来说,ViT-Base使用16x16像素的patch大小,输入图像的尺寸为224x224像素,这意味着每张图像将被划分为49个patch(22416×22416=14×14=19616224​×16224​=14×14=196个patch)。ViT-Base(ViT-B/16)通过将图像处理任务转化为序列处理任务。

具身机器人和通用AI 3225

[动态规划] UVa1025 城市里的间谍 (DAG的固定起点终点最长短路)

题目 思路 本题的难点在于抽象,由于时间本身就是一个天然的“序”,所以可以由时间和所在车站组成状态。 1.状态定义:(T,i),在T时刻位于i车站。 2.指针函数:d(T,i),还需在车站等待多长时间。 3.状态转移方程: 取决于对于每个状态,有三种决策: - 等1分钟。 - 乘坐往右开的车,去向右第一个车站。(有车的话) - 乘坐往做开的车,去向左第一个车站。(有车的话) ...

OI - IceCab 325

计算数列位置N的值

本文介绍了一个数列生成问题,要求根据输入的两个整数M和N生成特定规则的数列,并输出第N个位置上的数值。数列生成规则为:前M个元素为1到M;后续元素根据前M个元素是否重复来决定计算方式(求和或求差)。文章提供了C++、Java和Python三种语言的实现方案,均包含输入处理、数列初始化、循环计算和结果输出等步骤。各语言实现中均使用集合去重特性判断重复元素,并通过内置函数或自定义方法求取最大值和最小值。该问题主要考察基础编程能力,包括数组/列表操作、最值计算和重复元素判断等基本编程技巧。

面试高手的博客 653

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的博客 445

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

uva 1025 A Spy in the Metro DAG上的动态规划问题

看dp真的是能挫败自信心,感觉智商高低就能在这里体现了… 感觉真的不太会用dp啊,尤其是递推式,不会写呢~~(感觉是自己太弱了)~~ 然后这题也是看的紫书先,还是有点懵,看网上大神的题解,感觉跟紫书差不多。 但是我自己还是不是很理解啊,反复啃了好久终于是理解了。 dp[i][j] 代表的是 现在在i时刻 j站 还需要等待多久时间.. 起点 0 1终点 T N 那么知道 当 ...

一个蒟蒻的博客 200

jre9下载 jdk9

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

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

题目链接:UVA - 1025 A Spy in the Metro #include &lt;bits/stdc++.h&gt; using namespace std; int s[55][55], a[12500][55][5], dp[255][55]; int n, T, M1, M2, i, j, k, ans, num = 1; void init() { memset(...

Miracle_QSH的博客 213

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

动态规划_DAG例题_A Spy in the Metro(UVA1025)

动态规划 DAG例题

LonerIt的博客 599

UVA 1025 "A Spy in the Metro " (DAG上的动态规划?? or 背包问题??)

传送门 参考资料:   [1]:算法竞赛入门经典:第九章 DAG上的动态规划 题意:   Algorithm城市的地铁有 n 个站台,编号为 1~n,共有 M1+M2 辆列车驶过;   其中 M1 辆列车从 1 号站台驶向 n 号站台,M2 辆列车从 n 号站台驶向 1 号地铁;   (单程线,M1 辆列车到达 n 号站台后不会回返,同理 M2)   特工Maria 要在 T...

weixin_30548917的博客 135

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

【算法竞赛入门经典例题题解】 【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(动态规划)

本题vjudge链接 本篇是由DP总结中搬出的,目的是记录刷题进度 大致题意:一个线性的地铁,有n(2≤n≤50)n(2 \le n \le 50)n(2≤n≤50)个站,目标是在T(0≤T≤200)T(0 \le T \le 200)T(0≤T≤200)时刻从1号站到n号站,注是规定刚好T时刻,不是在T时刻之前也不是在T时刻之后,从1号点出发,可以在途中转乘,问你最少的中途等车时间 第i站到第i + 1站需要花的时间为tit_iti​ 有M1(M1≤50)M1(M1 \le 50)M1(M1≤50)个

hao_6_6的博客 193

UVA 1025 A Spy in the Metro [动态规划] [DAGdp]

A Spy in the MetroTime Limit: 3000MS 64bit IO Format: %lld & %llu 抓住时间这个天然的顺序。 每一个状态(i,j) i时间在j站台,有三种转移方案 在原地停留1s 从左边的车站来 从右边的车站来 那么方程就很好写了。。 这个DAG有些特殊。。。#include<iostream> #include<cst

C'est la vie. 631

UVa1025 A Spy in the Metro(DP) 紫书训练

题目链接:UVA1025 做题感受:完全不会,感觉跟刚学的DAG搭不上边,看了lrj的解析还是感觉不出和DAG有太大关系,而且还有一小部分还不能完全理解,以后再回来看看吧。 思路:在第i秒,第j站有三种决策, 1 在车站上停一秒 2 上车向右走 3 上车向左走 第2种和第3种决策可以更新第i秒,第j站的时间,因为他说明在第i秒时向右(或是向左)的车站有车跟他是连通的。 还有一小部分,就是为啥逆推,我一开始自己写的时候用的是顺推,推了半天就是推不出来,看了lrj的代码发现是逆推的,我个人看了一下感觉是逆推写起

m0_52834059的博客 157

UVA - 1025 A Spy in the Metro[DP DAG]

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 find her in the first...

weixin_30745641的博客 115

UVA1025 城市里的间谍 A Spy in the Metro(2003 ICPC world final)(DAG上DP)

输入比较麻烦 因为时间是单向流逝的,所以是一个天然的“序”,我们可以用一维用来循环枚举时间,我们规定 f[i][j]表示当前时刻为i,你的位置为车站j的最少的车站里的等待时间。 初始位置设置为f[0][1] = 0其余的为INF,用于使用min取最小值。 我们根据题意,一共有三种可能的决策: 在站台上等候一分钟 搭乘地铁向右走(如果有的话) 搭乘地铁向左走(如果有的话) 我们这三种情况(决策)对应了三种转移方程: 4. f[i][j] = min(f[i][j], f[i - 1][j] + 1);(.

繁凡さん的博客 481

UVA 1025 A Spy in the Metro dp

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3466 这是一道dp题目,作为菜鸟的我刚知道他叫DAG上的动态规划,DAG就是一种图吧,这个题的题义也可以大体看成一个图,N个点,这N个点连起来, 说一下题意某某某在1号车站,想去N号

LZK1997的博客 481
上一篇: UVA1606 (Amphiphilic Carbon Molecules)(极角排序,扫描)
下一篇: UVA1347(Tour)(DAG上的动态规划)
WedsonLin
博客等级 码龄7年 1粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值