UVa 1025 A Spy in the Metro
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35913
预处理出每个时间、每个车站是否有火车
为了方便判断是否可行,倒推处理,每次有三种决策:原地坐等一分钟、搭车向左(如果有车)、搭车向右(如果有车)
1 /**/ 2 #include<iostream> 3 #include<cstdio> 4 #include<cmath> 5 #include<cstring> 6 #include<algorithm> 7 using namespace std; 8 const int mxn=300; 9 int n,T; 10 bool h[mxn][mxn][2]; 11 int ti[mxn]; 12 int m,d,e; 13 int f[mxn][mxn]; 14 void clear(){ 15 memset(ti,0,sizeof(ti)); 16 memset(h,0,sizeof(h)); 17 memset(f,111,sizeof(f)); 18 } 19 int main(){ 20 int cnt=0; 21 while(scanf("%d",&n) && n){ 22 clear(); 23 scanf("%d",&T); 24 int i,j; 25 for(i=1;i<n;i++)scanf("%d",&ti[i]);//车站距离 26 scanf("%d",&m); 27 for(i=1;i<=m;i++) 28 { 29 scanf("%d",&d);//左边发车时间 30 for(j=1;d<=T && j<=n;d+=ti[j],j++){ 31 h[d][j][0]=1; 32 } 33 } 34 scanf("%d",&m); 35 for(i=1;i<=m;i++) 36 { 37 scanf("%d",&e);//右边发车时间 38 for(j=n;e<=T && j>=1;j--,e+=ti[j]){ 39 h[e][j][1]=1; 40 } 41 } 42 //以上全是初始化 43 f[T][n]=0; 44 for(i=T-1;i>=0;i--){//倒推 45 for(j=1;j<=n;j++){ 46 f[i][j]=f[i+1][j]+1;//等待 47 if(j<n && h[i][j][0] && i+ti[j]<=T) 48 f[i][j]=min(f[i][j],f[i+ti[j]][j+1]);//向右 49 if(j>1 && h[i][j][1] && i+ti[j-1]<=T) 50 f[i][j]=min(f[i][j],f[i+ti[j-1]][j-1]);//向左 51 } 52 } 53 printf("Case Number %d: ",++cnt); 54 if(f[0][1]>=0xff) printf("impossible\n"); 55 else printf("%d\n",f[0][1]); 56 } 57 return 0; 58 }
转载于:https://www.cnblogs.com/SilverNebula/p/5574062.html
UVa 1025 A Spy in the Metro相关推荐
- uva 1025——A Spy in the Metro
题意:有一个线性的车站(1-n),两个方向的车,给出列车的出发时刻和到下一站的时间,要求在到达n前换乘的等待时间最短. 思路:dp,每次有3种决策,要么等一分钟,要么往左走,要么往右,在3种决策下找到 ...
- UVA 1025 A Spy in the Metro DP水题
简单DAG,每个状态有三种决策,原地傻等,上往左开的车,上往右开的车. #include <cstdio> #include <cstring> #include <io ...
- Uva 1025 - A Spy in the Metro(DP)
题目链接 https://vjudge.net/problem/UVA-1025 [题意] 某城市里的地铁是线性的,有n个车站(2<=n<=50),有M1辆列车从第1站从左往 ...
- A Spy in the Metro UVA - 1025
题意:某城市的地铁是线性的,有n(2<=n<=50)个车站,从左到右的编号为1~n.有M1辆车从第1站出发往右开,还有M2辆车从第n站开始往左开. 在时刻0,Mario从第1站出发,目的是 ...
- UVA1025 城市里的间谍 A Spy in the Metro(2003 ICPC world final)(DAG上DP)
整理的算法模板合集: ACM模板 输入比较麻烦 因为时间是单向流逝的,所以是一个天然的"序",我们可以用一维用来循环枚举时间,我们规定 f[i][j]表示当前时刻为i,你的位置为车 ...
- UVA1025——A Spy in the Metro【dp】
题目链接:https://cn.vjudge.net/problem/UVA-1025 题目大意:Mario从第1站出发,目的是在时刻T会见车站 nnn 的一个间谍.由于在车站等待容易被抓,所以应尽量 ...
- UVA 1025 紫书练习题 动态规划
好吧,做例题总是这样,莫名其妙的WA,然后莫名其妙的AC... 关键的部分紫书上已经说得很清楚了,剩下的就是确定has_train这个数组,我觉得确定这个数组也不是难事吧..把数据范围看清楚,然后看看 ...
- UVa 1025 (DAG 上的动态规划,有固定终点的最短时间,逆推法)
题目链接 题意: 某城市的地铁是线性的,有n(2≤n≤50)个车站,从左到右的编号为1~N.有M1辆列车从第一站开始往右开,还有M2辆列车从第n站开始往左开.在时刻0,Mario从第1站出发,目的是 ...
- DP(动态规划)总结
1. 写在前面的话 之前写了一篇不像总结的动态规划总结,感觉更像是一个成长历程,所以就打算重写一篇. 2. 对DP简单的总结 dp的题目特点 求最大或者最小值(如背包:价值最大.凑硬币:数量最少--) ...
最新文章
- JavaScript的DOM操作-重点部分-第一部分
- 【S操作】轻松优雅防止(解决)两次掉进同一坑的完美解决方案
- Android获取存储卡路径的方式(转)
- 【计算机网络复习】1.1.2 标准化工作及相关组织
- B站、豆瓣都崩了,还有啥技术能靠得住?
- BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论
- js获取当前页面的地址和端口_url
- JIRA状态为任务结束,但是解决结果为未解决相关配置
- Django 【第一篇】基础
- 对于计算机专业英语的问题,计算机专业英语的问题
- 机器学习种9种常用算法
- 内存带宽测试工具 mbw
- 那些年你错过的房子 1980-2017年记录: 深圳真实房价
- 昨天晚上看了冰川时代三
- centos7更换yum仓库、静态IP、SSH密钥登陆
- 微信小程序点击查看大图
- 网站等保三级怎么做?手续是怎样的?
- 使用Profiler进行性能分析
- 警惕“电子发票”邮件,多家企业中招
- Ardunio下的STM32串口通信
热门文章
- 汇编:内存地址为什么从0开始?等问题
- [译]使用 Rust 开发一个简单的 Web 应用,第 4 部分 —— CLI 选项解析
- springboot+mongodb
- C# JSON使用的常用技巧(一)
- linux安装和配置 mysql、redis 过程中遇到的问题记录(转)
- 跟恶意插件的较量:手工清除Orzhz广告程序
- 安卓 存储---SharedPreferences
- php调用for循环函数吗,我需要将“函数”与“for循环”结合使用php
- clover写入efi_2014 黑苹果折腾之clover efi全新安装
- mac redis 链接_在Ubunt/Mac系统安装Redis以及设置Redis密码并且允许远程连接 - Laravel学习网...