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 ...
随机推荐
- 09 Python两种创建类的方式
第一种比较普遍的方式: class Work(): def __init__(self,name): self.name = name w = Work('well woker') 这样就简单创建了一 ...
- 谈谈对this的指向问题
普通函数中:this——window 定时器:this——window 构造函数中:this——当前实例化的对象 事件处理函数:this——事件触发对象
- JAVA核心技术--继承(1)
1.继承:向上追溯,对同一批类的抽象,延续和扩展父类的一切信息! 1)关键字:extends 例如,父类是Animal,子类是Dog; eg: public class Dog exte ...
- ubuntu自己定义环境变量,替代常用的操作命令
问题背景是这样的,因为自己会经常用自己的用户链接服务器,比如自己的用户是yongjie,然后服务器的ip是162.105.97.31 所以经常执行的命令是ssh yongjie@162.105.97. ...
- CDH5.13.3安装手册
Server端需要打开端口 7180 7182 选址正确的版本,cdh版本不要高于cm版本 CM下载地址 http://archive.cloudera.com/cm5/cm/5/cloudera-m ...
- 2019.10.28sql注入工具
SQLMAP工具的使用 sql注入工具:明小子 啊D 萝卜头 穿山甲 sqlmap等等 开源自动化注入利用工具,支持12中数据库,在/plugins中可以看到支持的数据库种类 支持的注入类型:bool ...
- linux 常用指令汇总
新用户的一些操作: 查看当前用户:who am i(可以看到是否是伪终端)/也可以是whoami 添加用户:sudo adduser ..(用户名)..(此时创建的用户并未加入sudo组所以并不具有至 ...
- 浙大数据结构课后习题 练习三 7-4 List Leaves (25 分)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- 使用C#表达式树为两个对象的相同属性赋值
//缓存表达式树 private static Dictionary<string, object> objCache = new Dictionary<string, object ...
- 孕期出血是否先兆流产——B超看婴儿是否在子宫内+hcg值是否过低孕激素不足
转自:http://blog.sina.com.cn/s/blog_4a869c130102e7nu.html 很多人都经历过孕早期阴道出血,但结局大不一样. 人类受孕后,从一个单细胞逐渐发育成为一个 ...