UVA 1025 -- A Spy in the Metro (DP)
UVA 1025 -- A Spy in the Metro
题意:
一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短,输出最短等车时间。
思路:
先用一个has_train[t][i][0]来表示在t时刻,在车站i,是否有往右开的车。同理,has_train[t][i][1]用来保存是否有往左开的车。
用d(i,j)表示时刻i,你在车站j,最少还需要等待多长时间。边界条件是d(T,n)=0,其他d(T,i)为正无穷。
每次有三种决策:
①:等一分钟。
②:搭成往右开的车(如果有)。
③:搭成往左开的车(如果有)。
#include<iostream>
#include<cstring>
using namespace std;
const int INF = 0x3f3f3f3f;
int t[];///存储站台间的时间间隔
int has_train[][][];///has_train[i][j][0]在i时刻j站台是否有向右行驶的车
///has_train[i][j][1]在i时刻j站台是否有向左行驶的车
int dp[][];
int main()
{
int n;///(2 ≤ N ≤ 50)
int Case=;
while(cin>>n && n)
{
memset(has_train,,sizeof(has_train));
int T;///(0 ≤ T ≤ 200)
cin>>T;
for(int i=;i<n;i++)
cin>>t[i];///(1 ≤ ti ≤ 20)
int m1;///向右行驶
cin>>m1; ///(1 ≤ M1 ≤ 50)
for(int i=;i<m1;i++)
{
int x;
cin>>x;
for(int j=;x<T && j<=n;j++)
{
has_train[x][j][] = ;///向右
x+=t[j];
}
}
int m2;///向左行驶
cin>>m2;///(1 ≤ M2 ≤ 50)
for(int i=;i<m2;i++)
{
int x;
cin>>x;
for(int j=n;x<=T&&j>=;j--)
{
has_train[x][j][] = ;///向左
x+=t[j-];
}
} for(int i=;i<=n-;i++) dp[T][i] = INF;
dp[T][n] = ;
for(int i=T-;i>=;i--)///考察T-i时刻的所有站台
{
for(int j=;j<=n;j++)///在j站台
{
dp[i][j] = dp[i+][j] + ;
if(j<n && has_train[i][j][] && i+t[j]<=T)///可以向左行驶
dp[i][j] = min(dp[i][j],dp[i+t[j]][j+]);
if(j> && has_train[i][j][] && i+t[j-]<=T)///可以向右行驶
dp[i][j] = min(dp[i][j],dp[i+t[j-]][j-]);
}
}
cout<<"Case Number "<<Case++<<": ";
if(dp[][] >= INF) cout<< "impossible" << endl;
else cout<<dp[][]<<endl;
}
return ;
}

UVA 1025 -- A Spy in the Metro (DP)的更多相关文章
- 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 especia ...
- uva 1025 A Spy in the Metro 解题报告
A Spy in the Metro Time Limit: 3000MS 64bit IO Format: %lld & %llu Submit Status uDebug Secr ...
- UVA 1025 A Spy in the Metro 【DAG上DP/逆推/三维标记数组+二维状态数组】
Secret agent Maria was sent to Algorithms City to carry out an especially dangerous mission. After s ...
- UVa 1025 A Spy in the Metro (DP动态规划)
题意:一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短, 也就是尽量多坐车,最后输出最少等待时间. 析:这个挺复杂,首先时间是 ...
- UVa 1025 A Spy in the Metro(动态规划)
传送门 Description Secret agent Maria was sent to Algorithms City to carry out an especially dangerous ...
- DAG的动态规划 (UVA 1025 A Spy in the Metro)
第一遍,刘汝佳提示+题解:回头再看!!! POINT: dp[time][sta]; 在time时刻在车站sta还需要最少等待多长时间: 终点的状态很确定必然是的 dp[T][N] = 0 ---即在 ...
- World Finals 2003 UVA - 1025 A Spy in the Metro(动态规划)
分析:时间是一个天然的序,这个题目中应该决策的只有时间和车站,使用dp[i][j]表示到达i时间,j车站在地上已经等待的最小时间,决策方式有三种,第一种:等待一秒钟转移到dp[i+1][j]的状态,代 ...
- uva 1025 A Spy int the Metro
https://vjudge.net/problem/UVA-1025 看见spy忍俊不禁的想起省赛时不知道spy啥意思 ( >_< f[i][j]表示i时刻处于j站所需的最少等待时间,有 ...
- UVA 1025 "A Spy in the Metro " (DAG上的动态规划?? or 背包问题??)
传送门 参考资料: [1]:算法竞赛入门经典:第九章 DAG上的动态规划 题意: Algorithm城市的地铁有 n 个站台,编号为 1~n,共有 M1+M2 辆列车驶过: 其中 M1 辆列车从 1 ...
随机推荐
- asyncio动态添加任务
asyncio.run_forever()下动态添加任务 方法一.asyncio.run_coroutine_threadsafe(coroutine, loop) 方法二.asyncio.call_ ...
- ros 配置网卡
#定义lan接口的IP和掩码/ip address add address=192.168.8.254/255.255.255.0 interface=lan#定义网关/ip route add ga ...
- yum 报错3
. Contact the upstream for the repository and get them to fix the problem. . Reconfigure the baseurl ...
- IO模型(epoll)--详解-03
写在前面 epoll是开发linux高性能服务器的必备技术至,epoll本质,是服务端程序员的必须掌握的知识. 七.epoll的原理和流程 本节会以示例和图表来讲解epoll的原理和流程. 创建epo ...
- radio赋值法
一般都会使用attr来使选中: $("#DIV的ID input[name='radio的name'][value="'+动态传的radio的value值+'"]&quo ...
- A*算法实现(图形化表示)——C++描述
概要 A*算法是一种启发式寻路算法,BFS是一种盲目的无目标的搜索算法,相比于BFS,A*算法根据适应度构建优先队列,根据适应度值可以很好的向目标点移动,具体详情,请看搜索相关文档,我在只是实现了在无 ...
- k8s存储卷概述
pod本身具有生命周期,故其内部运行的容器及其相关数据自身均无法持久存在.docker支持配置容器使用存储卷将数据持久存储于容器自身文件系统之外的存储空间中,它们可以是节点文件系统或网络文件系统之上的 ...
- grunt-contrib-compass 编译sass
grunt-contrib-compass的作用是编译sass文件为css.使用该插件需要先安装sass和compass. (1)安装sassgem install sass(2)安装compassg ...
- qt5---事件过滤器
- JAVA笔记8-对象转型casting
1.规则 (1)基类(父类)的引用类型变量可以指向其子类对象:(向上转型) (2)基类的引用不可以访问其子类对象新增加的成员(属性和方法): (3)可以使用“引用变量 instanceof 类名”来判 ...