uva 1025,城市的间谍
题目链接:https://uva.onlinejudge.org/external/10/1025.pdf
题意:
地铁是线性的,有n个站,编号(1~n),M1辆从左至右的车,和M2辆从右至左的车,发车时刻给出,然后是,每两个站之间要跑多长时间。一个间谍要从1车站到n车站,但是他要求等车的时间最短,不然间谍会被抓,有可能到不了,输出impossible.
分析:
影响每一步的决策只有两个因素,1,时刻,2,哪一个车站。那么DP状态就出来了DP[T][n]在T时刻,第n个站还要等多少分钟。
状态转移:只有三个情况,要么是等一分钟,要么是上左边的车,要么是上右边的车。
边界条件dp[T][n] = 0;不用等了。
dp[i][j] = min(dp[i+1][j]+1,dp[i+t[j]][j+1],dp[i+t[j-1]][j-1]);
然后就是求has_train[][][2]数组了。具体看程序。
#include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f int n;
int T;
int t[]; int has_train[][][];
int dp[][]; int main()
{
int cases = ;
while(scanf("%d",&n),n)
{
scanf("%d",&T);
for(int i=; i<=n-; i++)
{
scanf("%d",&t[i]);
} int m1,m2;
scanf("%d",&m1);
memset(has_train,,sizeof(has_train)); while(m1--)
{
int d;
scanf("%d",&d);
for(int j=; j<=n-; j++)
{
if(d<=T) has_train[d][j][] = ;
d+=t[j];
}
} scanf("%d",&m2); while(m2--) {
int d;
scanf("%d",&d);
for(int j=n-;j>=;j--) {
if(d<=T) has_train[d][j+][] = ;
d+=t[j];
}
} for(int i=; i<=n-; i++)
dp[T][i] = INF;
dp[T][n] = ; for(int i = T-; i>=; i--)
{
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-]);
} }
} printf("Case Number %d: ",cases++);
if(dp[][]>=INF) printf("impossible\n");
else printf("%d\n",dp[][]); } return ;
}
uva 1025,城市的间谍的更多相关文章
- UVa 1025 城市里的间谍
https://vjudge.net/problem/UVA-1025 题意:一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短 ...
- UVA 1025 -- A Spy in the Metro (DP)
UVA 1025 -- A Spy in the Metro 题意: 一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短, ...
- 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(动态规划)
传送门 Description Secret agent Maria was sent to Algorithms City to carry out an especially dangerous ...
- uva 1025
紫皮书 非原创…… 某城市的地铁是线性的有n个车站从左到右编号为1-n,有M1辆地铁从第一站出发,有M2辆车从最后一站出发,mario从第一站出发,目的是在时刻T会见车站n的一个朋友(间谍).在车站等 ...
- UVa 221城市正视图(离散化)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVa 1025 (动态规划) A Spy in the Metro
题意: 有线性的n个车站,从左到右编号分别为1~n.有M1辆车从第一站开始向右开,有M2辆车从第二站开始向左开.在0时刻主人公从第1站出发,要在T时刻回见车站n 的一个间谍(忽略主人公的换乘时间).输 ...
- HDU 1025 城市供应 【LIS】
题目链接:https://vjudge.net/contest/228455#problem/A 题目大意: 有2n个城市,其中有n个富有的城市,n个贫穷的城市,其中富有的城市只在一种资源富有,且富有 ...
随机推荐
- CommonJS规范
CommonJS是一种规范,NodeJS是这种规范的实现.CommonJS是一 个不断发展的规范,计划将要包括如下部分: Modules Binary strings and buffers Char ...
- Lintcode: Maximum Subarray Difference
Given an array with integers. Find two non-overlapping subarrays A and B, which |SUM(A) - SUM(B)| is ...
- ofbiz进击 第六节。 --OFBiz配置之[widget.properties] 配置属性的分析
配置内容分析如下 # -- 定义上下文使用者 -- security.context =default # -- 定义密码限制长度最小值 -- password.length.min =5 # -- ...
- CCF真题之命令行选项
201403-3 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项.每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔.这些字符串中的第一个为该命令行工具的名字,由小写字母 ...
- docker进入容器方法
更简单的,建议大家下载 .bashrc_docker,并将内容放到 .bashrc 中. $ wget -P ~ https://github.com/yeasy/docker_practice/ra ...
- PHP5各个版本的新功能和新特性总结(转载 http://www.jb51.net/article/48150.htm)
本文目录:PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束PHP5.2:JSON 支持PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredo ...
- ios学习笔记(二)第一个应用程序--Hello World
原文地址:http://blog.csdn.net/shangyuan21/article/details/18416537 上一篇文章,Windows7上使用VMWare搭建iPhone开发环境介绍 ...
- ASP.NET输出流至少要有256个字节的数据后Response.Flush方法才会生效
很多时候我们写的asp.net程序会因为做很多操作,所以会花上一分钟甚至几分钟时间.为了使软件使用者能够耐心的等待程序的执行,我们经常会希望有一个进度条来表示程序执行的状态.或者最起码要显示一个类似: ...
- 创建与删除SQL约束或字段约束
1)禁止所有表约束的SQLselect 'alter table '+name+' nocheck constraint all' from sysobjects where type='U'2)删除 ...
- Android ListView的理解(一)
一.概述 这部分主要是讲解ListView在初始时,即setAdapter之后,如何将Adapter中取得的view添加到ListView中,主要涉及到几个方法: layoutChildren,fil ...