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)的更多相关文章

  1. 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 ...

  2. uva 1025 A Spy in the Metro 解题报告

    A Spy in the Metro Time Limit: 3000MS     64bit IO Format: %lld & %llu Submit Status uDebug Secr ...

  3. 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 ...

  4. UVa 1025 A Spy in the Metro (DP动态规划)

    题意:一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短, 也就是尽量多坐车,最后输出最少等待时间. 析:这个挺复杂,首先时间是 ...

  5. UVa 1025 A Spy in the Metro(动态规划)

    传送门 Description Secret agent Maria was sent to Algorithms City to carry out an especially dangerous ...

  6. DAG的动态规划 (UVA 1025 A Spy in the Metro)

    第一遍,刘汝佳提示+题解:回头再看!!! POINT: dp[time][sta]; 在time时刻在车站sta还需要最少等待多长时间: 终点的状态很确定必然是的 dp[T][N] = 0 ---即在 ...

  7. World Finals 2003 UVA - 1025 A Spy in the Metro(动态规划)

    分析:时间是一个天然的序,这个题目中应该决策的只有时间和车站,使用dp[i][j]表示到达i时间,j车站在地上已经等待的最小时间,决策方式有三种,第一种:等待一秒钟转移到dp[i+1][j]的状态,代 ...

  8. uva 1025 A Spy int the Metro

    https://vjudge.net/problem/UVA-1025 看见spy忍俊不禁的想起省赛时不知道spy啥意思 ( >_< f[i][j]表示i时刻处于j站所需的最少等待时间,有 ...

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

    传送门 参考资料: [1]:算法竞赛入门经典:第九章 DAG上的动态规划 题意: Algorithm城市的地铁有 n 个站台,编号为 1~n,共有 M1+M2 辆列车驶过: 其中 M1 辆列车从 1 ...

随机推荐

  1. sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value: '\\xE6\\xB1\\x89\\xE8\\xAF\\xAD...' for column 'className' at row 1") [SQL: INSERT INTO classmessage (`classId

    sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value: '\\xE ...

  2. 团队作业-Beta冲刺(周四)

    一. 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 这个作业要求在哪里 https://edu.c ...

  3. UvaL-7670 上下界可行费用流

    #include <iostream> #include <cstdio> #include <cstring> #include <queue> #d ...

  4. 次小生成树(LCA倍增)

    算法: 求出MST之后枚举每条在MST之外的边 连上之后会出现环 找到环中除加上的边之外权值最大的边 删除该边之后得到一颗新树 做法: 利用LCA倍增地维护最小生成树上两点之间的最大边权 每次枚举在M ...

  5. jquery前端问题随记

    1.图片名称不变,但要求刷新,web页面不重新加载渲染,在url地址后面加t=时间戳 js脚本 img.src=url+"?t="+Math.random() 如果是jsp页面,要 ...

  6. MySQL更新字段来自另一个表的count()值

    假设有文章post和评论comment两个表,文章表记录有评论的数量,但是这个值我们要一次更新. 如下,现在post表的comment_count都是0,我们的目标是:执行一个SQL语句,让其把统计c ...

  7. Linux服务器安装配置JDK

    一.准备工作: 1.登录服务器,切换到root用户(su - root,然后输入密码,按enter),进入根目录:cd / 2.进入要安装jdk的目录,自己可以创建一个java目录,执行命令如下: c ...

  8. yaml格式介绍

    一.简介 YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写.它实质上是一种通用的数据串行化格式. 它的基本语法规则如下. 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab ...

  9. Python 面向对象Ⅲ

    Python内置类属性 __dict__ : 类的属性(包含一个字典,由类的数据属性组成) __doc__ :类的文档字符串 __name__: 类名 __module__: 类定义所在的模块http ...

  10. 直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结

    垃圾回收算法 1.标记清除 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段. 在标记阶段首先通过根节点(GC Roots),标记所有从根节点开始的对象,未被标记的对象就是未被引用的垃圾对象. ...