---恢复内容开始---

题意:有n(2<=n<=50)个车站,从左到右编号为1~n,有M1辆列车从第1站向右开,还有M2辆列车从第N站向左开。在时刻0,间谍从第1站出发,目的是在时刻T(0<=T<=200)会见在车站n的一个间谍。在车站等候容易被抓,所以需要尽量躲在火车上,使在车站等待的时间尽量的少,列车靠站时间忽略不计,即使2站方向相反列车在同一时间靠站,间谍也能完成换乘。

题解:由于时间有序,所以可以通过判断在时刻t,在车站i 最少需要等候多少时间进行DP。由于输入较2复杂,所以可以用has_train数组表示在时刻t,车站i是否有向左或者向右的火车。具体细节可见代码。

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std; const int maxn = + ;
const int maxt = + ;
const int INF = ;
int t[maxn],has_train[maxt][maxn][],dp[maxt][maxn]; int main(){
int n,T,m1,m2,kase=;
while(~scanf("%d",&n)&&n){
scanf("%d",&T);
for(int i=;i<n;i++){
scanf("%d",&t[i]);///i到i+1的时间
}
memset(has_train, , sizeof(has_train));
scanf("%d",&m1);int d;
for(int i=;i<m1;i++){
scanf("%d",&d);
for(int j=; j<n; j++) {///此处从1开始表示车站数
if(d<=T) has_train[d][j][] = true;///d为时间,i为车站,表示在时间d时是否有向右的车可以搭乘
d+=t[j];
}
}
scanf("%d",&m2);
for(int i=;i<m2;i++){
scanf("%d",&d);
for(int j=n-;j>;j--){
if(d<=T) has_train[d][j+][]=true;///d为时间,i为车站,表示在时间d时是否有向左的车可以搭乘
d+=t[j];
}
}
for(int i=;i<n;i++) dp[T][i]=INF;///最终点不会在第n站之外
dp[T][n]=;
for(int i=T-;i>=;i--)///逆序倒推,对于每个车站都有3个选择,等待1个单位时间,搭乘向右的车,搭乘向左的车
for(int j=;j<=n;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-]);///对3种状态进行查询,找出最优解
} printf("Case Number %d: ",++kase);
if(dp[][]>=INF) printf("impossible\n");
else
printf("%d\n",dp[][]);
}
return ;
}

A Spy in the Metro(UVA 1025 ACM/ICPC World Finals2003)的更多相关文章

  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 (DP)

     UVA 1025 -- A Spy in the Metro  题意:  一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短, ...

  4. uva A Spy in the Metro(洛谷 P2583 地铁间谍)

    A Spy in the Metro Secret agent Maria was sent to Algorithms City to carry out an especially dangero ...

  5. 洛谷2583 地铁间谍 (UVa1025A Spy in the Metro)

    洛谷2583 地铁间谍(UVa1025A Spy in the Metro) 本题地址:http://www.luogu.org/problem/show?pid=2583 题目描述 特工玛利亚被送到 ...

  6. UVA1025-A Spy in the Metro(动态规划)

    Problem UVA1025-A Spy in the Metro Accept: 713  Submit: 6160Time Limit: 3000 mSec Problem Descriptio ...

  7. 铁轨(rails, ACM/ICPC CERC 1997,Uva 514)

    铁轨(rails, ACM/ICPC CERC 1997,Uva 514) 题目描述 某城市有一个火车站,铁轨铺设如图所示.有n节车厢从A方向驶入车站,按进站顺序编号为1~n.你的任务是让它们按照某种 ...

  8. 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛

    比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...

  9. ACM/ICPC 之 BFS(离线)+康拓展开(TSH OJ-玩具(Toy))

    祝大家新年快乐,相信在新的一年里一定有我们自己的梦! 这是一个简化的魔板问题,只需输出步骤即可. 玩具(Toy) 描述 ZC神最擅长逻辑推理,一日,他给大家讲述起自己儿时的数字玩具. 该玩具酷似魔方, ...

随机推荐

  1. 机器学习---笔记----Python基础

    一. python简介 1. python 具有丰富强大的库,常被称为胶水语言,能够把用其他语言制作的各种模块很轻松地联结在一起 2. python强制使用空白符(white space)作为语句缩进 ...

  2. learning ddr tRP and tRP tRTP CL tRAS

    referce :https://blog.csdn.net/ghostyu/article/details/7728106 tRP(RAS Precharge Time): “内存行地址控制器预充电 ...

  3. [Leetcode 101]判断对称树 Symmetric Tree

    [题目] Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). ...

  4. 深入理解java虚拟机---内存分配策略(十三)

    转载请注明原文地址:https://blog.csdn.net/initphp/article/details/30487407 Java内存分配策略 使用的ParNew+Serial Old收集器组 ...

  5. 8.3 C++格式标识和操纵器

    参考:http://www.weixueyuan.net/view/6409.html 总结: 我们需要借助格式标识符来控制cout对象的输出格式. 在ios_base类中,系统已经定义了很多格式标识 ...

  6. DevExpress v18.1新版亮点——DevExtreme篇(四)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExtreme JavaScript Controls v18.1 的新功能 ...

  7. docker 安全性问题

    最近项目组成员要在k8s中引入类似于docker --privileged 的功能.显示通过api查询在container和pod层面做了securityContext的设置. 但是没有起到效果.于是 ...

  8. <kafka><应用场景><Kafka VS Flume>

    前言 最近在搭一个离线Hadoop + 实时SparkStreaming的日志处理系统,然后发现基本上网上的这种系统都集成了kafka. 自己对kafka有一点点的认识,之前看过官网文档,用过一次,就 ...

  9. jetty域证书更新

    服务器:centos6.6 1.从正确的.pfx文件中导出.pem认证文件 #openssl pkcs12 -in example.pfx -nodes -out server.pem pfx文件可以 ...

  10. Python写一个批量生成账号的函数

    批量生成账户信息,产生的账户由@sina.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母.小写字母和数字组成. def Users(num,len): # n ...