9-1 A Spy in the Metro uva1025 城市里的间谍 (DP)
非常有价值的dp题目 也是我做的第一题dp 真的效率好高
题意:某城市的地铁是线性的 有n个车站 从左到右编号为1-n 有m1辆列车从第一站开始往右开 还有m2辆列车从第n站开始往左开 在时刻0 小明从第1站出发 目的是在时刻T 正好会见在第n站的间谍 为了不被抓 小明在车站等待的时间要尽量少 求出最短时间 如果到不了 输出impossible
输入第一行为n 第二行为T 第三行有n-1个数字 表示 从左到右两个车站之间列车行驶的时间 接下来为m1 然后跟着m1个数字 表示车站1发车时刻 然后m2 同理
一开始根本想不到用dp 这题的元素好多 !!
每次有三种决策
1 原地等待1s
2 搭乘往右的车 (当然 前提是有)
3 搭乘往左的车
当面临多决策问题时 且所处环境(时间 地点)多样时 用dp做!!!
影响决策的元素只有两个 1 时间 2 所处车站
所以 dp i j i表示当前时刻 j 表示所处车站
从结束点 也就是 时刻为T时开始进行dp
注意对dp数组的初始化 都在i=T的情况下 当i==n时 达成目标 dp为0 当i为其他值时 全部为inf(显然已经没机会了)
非常好的dp !!
- #include<bits/stdc++.h>
- using namespace std;
- #define N 200+5
- #define inf 0x3f3f3f3f
- int n,t[N],car[N][N][];
- int dp[N][N];
- int main()
- {
- int cas=;
- int T;
- int q;
- int x;
- while(scanf("%d",&n)==,n)
- {
- memset(car,,sizeof car);
- scanf("%d",&T);
- for(int i=;i<n-;i++)scanf("%d",&t[i]);
- scanf("%d",&q);
- while(q--)
- {
- scanf("%d",&x);
- car[][x][]=;
- for(int i=;i<n;i++)
- {
- x+=t[i-];
- car[i][ x ][]=;
- }
- }
- scanf("%d",&q);
- while(q--)
- {
- scanf("%d",&x);
- car[n-][x][]=;
- for(int i=n-;i>=;i--)
- {
- x+=t[i];
- car[i][x][]=;
- }
- }
- 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( car[j][i][] && i+t[j]<=T && j<n- )
- dp[i][j]=min(dp[i][j],dp[ i+t[j] ][j+] );
- if( car[j][i][] && j!= && i+t[j-]<=T )
- dp[i][j]=min(dp[i][j],dp[ i+t[j-] ][j-]);
- }
- printf("Case Number %d: ",++cas);
- if(dp[][]>=inf)
- printf("impossible\n");
- else
- printf("%d\n",dp[][]);
- }
- return ;
- }
9-1 A Spy in the Metro uva1025 城市里的间谍 (DP)的更多相关文章
- UVa-1025城市里的间谍 A Spy in the Metro
原题 城市里的间谍 分析 动态规划,dp[i][j]表示你在时刻i,车站j,最少还要等待的时间. 边界条件d[T][n]=0 已经到达,其他d[T][i]=inf不可达. 在一个站点时,有以下三种决策 ...
- UVA1025 城市里的间谍
#include<iostream> #include<cstdio> #include<memory.h> using namespace std; #defin ...
- 【动态规划】[UVA1025]A Spy in the Metro 城市里的间谍
参考:https://blog.csdn.net/NOIAu/article/details/71517440 https://blog.csdn.net/c20180630/article/deta ...
- 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 ...
- 洛谷2583 地铁间谍 (UVa1025A Spy in the Metro)
洛谷2583 地铁间谍(UVa1025A Spy in the Metro) 本题地址:http://www.luogu.org/problem/show?pid=2583 题目描述 特工玛利亚被送到 ...
- UVA1025-A Spy in the Metro(动态规划)
Problem UVA1025-A Spy in the Metro Accept: 713 Submit: 6160Time Limit: 3000 mSec Problem Descriptio ...
- 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 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 ...
- UVA 1025 -- A Spy in the Metro (DP)
UVA 1025 -- A Spy in the Metro 题意: 一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短, ...
随机推荐
- Spring Resource 类图
插播个广告 老丈人家的粉皮儿,农产品,没有乱七八糟的添加剂,欢迎惠顾
- 洛谷P1102 A-B数对
洛谷P1102 A-B数对 https://www.luogu.org/problem/show?pid=1102 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A ...
- ElasticSearch关键概念
Elasticsearch 添加索引 一个存储关联数据的地方 用来指向一个或者多个分片(shards)的逻辑命名空间(logical namespcase) 应用程序直接与索引通信 一个分片(shar ...
- Java SSM框架之MyBatis3(三)Mybatis分页插件PageHelper
引言 对于使用Mybatis时,最头痛的就是写分页,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真不想花双倍的时间写count和select ...
- 【BZOJ】2434: [Noi2011]阿狸的打字机 AC自动机+树状数组+DFS序
[题意]阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的: l 输入小写 ...
- iOS6下实现滑动返回
[转载请注明出处] 之前在看iOS7滑动返回时,发现了一个iOS6 SDK下的第三方实现,今天偶然间发现了作者在其博客上对该实现的一些心得,读来深觉之前的思考太过肤浅,许多实际的问题没有考虑到.帖子链 ...
- jq 监听input值的变化
$(".popWeiXing .name").bind("input propertychange", function() { modValue.diyDat ...
- C# 链接webservice报错
未处理 System.ServiceModel.EndpointNotFoundException Message="没有终结点对可能接受消息的 http://192.168.0.168/ ...
- 记录一下mariadb设置主从同步的过程[虚拟机测试]
背景:因为工作的关系,需要找寻实时同步数据到另外系统的服务器的数据库上,查询下来,用mariadb进行跨服务器的同步数据动作,用主从同步比较多,也比较保险 也有使用shell脚本的,定时定候的执行my ...
- 数据库-mysql管理
MySQL 管理 启动及关闭 MySQL 服务器 首先,我们需要通过以下命令来检查MySQL服务器是否启动: ps -ef | grep mysqld 如果MySql已经启动,以上命令将输出mysql ...