【luogu2583】地铁间谍
https://www.luogu.org/problem/show?pid=2583
设在时刻i,车站j到结束最短需要等待f(i,j)分钟,得状态转移方程:
f(i,j)=min{
f(i+1,j)+1
f(i+t[j-1],j-1) (若时刻i有向左走的车)
f(i+t[j],j+1) (若时刻i有向右走的车)
}
因此需要预处理每一时刻有没有车可以坐。
初始值f(t,n)=0,其他均为∞。
#include <iostream>
#include <cstring>
#define maxt 210
#define maxn 60
#define inf 1000
using namespace std;
bool has_train[maxt][maxn][];
int dp[maxt][maxn];
int n, tt, t[maxn], m1, m2, d;
int main()
{
int cnt = ;
while (true)
{
cin >> n;
if (n == ) break;
cin >> tt;
for (int i = ; i<n; i++) cin >> t[i]; //预处理has_train数组
memset(has_train, false, maxt * maxn * );
cin >> m1;
while (m1--)
{
cin >> d;
for (int j = ; j <= n - && d <= tt; j++)
{
has_train[d][j][] = true;
d += t[j];
}
}
cin >> m2;
while (m2--)
{
cin >> d;
for (int j = n; j >= && d <= tt; j--)
{
has_train[d][j][] = true;
d += t[j - ];
}
} //初始化dp数组
for (int i = ; i <= n; i++)
dp[tt][i] = inf;
dp[tt][n] = ; for (int i = tt - ; i >= ; i--)
{
for (int j = ; j <= n; j++)
{
dp[i][j] = dp[i + ][j] + ; //+1s
if (i + t[j] <= tt && j + <= n && has_train[i][j][])
dp[i][j] = min(dp[i][j], dp[i + t[j]][j + ]); //向右走
if (i + t[j - ] <= tt && j - >= && has_train[i][j][])
dp[i][j] = min(dp[i][j], dp[i + t[j - ]][j - ]); //向左走
}
}
if (dp[][]<inf)
cout << "Case Number " << cnt << ": " << dp[][] << endl;
else
cout << "Case Number " << cnt << ": impossible" << endl;
cnt++;
}
return ;
}
【luogu2583】地铁间谍的更多相关文章
- 洛谷2583 地铁间谍 (UVa1025A Spy in the Metro)
洛谷2583 地铁间谍(UVa1025A Spy in the Metro) 本题地址:http://www.luogu.org/problem/show?pid=2583 题目描述 特工玛利亚被送到 ...
- 洛谷P2583 地铁间谍
P2583 地铁间谍 题目描述 特工玛利亚被送到S市执行一个特别危险的任务.她需要利用地铁完成他的任务,S市的地铁只有一条线路运行,所以并不复杂. 玛利亚有一个任务,现在的时间为0,她要从第一个站出发 ...
- 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 ...
- 地铁间谍 洛谷 p2583
题目描述 特工玛利亚被送到S市执行一个特别危险的任务.她需要利用地铁完成他的任务,S市的地铁只有一条线路运行,所以并不复杂. 玛利亚有一个任务,现在的时间为0,她要从第一个站出发,并在最后一站的间谍碰 ...
- uva 1025,城市的间谍
题目链接:https://uva.onlinejudge.org/external/10/1025.pdf 题意: 地铁是线性的,有n个站,编号(1~n),M1辆从左至右的车,和M2辆从右至左的车,发 ...
- 城市里的间谍B901
城市里的间谍 城市里的间谍 难度级别:C: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 某城市的地铁是线性的,有 n(2 <= n ...
- 9-1 A Spy in the Metro uva1025 城市里的间谍 (DP)
非常有价值的dp题目 也是我做的第一题dp 真的效率好高 题意:某城市的地铁是线性的 有n个车站 从左到右编号为1-n 有m1辆列车从第一站开始往右开 还有m2辆列车从第n站开始往左开 在 ...
- 基于ionic+angulajs的混合开发实现地铁APP
基于ionic+angulajs的混合开发实现地铁APP 注:本博文为博主原创,转载时请注明出处. 项目源码地址:https://github.com/zhangxy1035/SubwayMap 一. ...
- Python写地铁的到站的原理简易版
Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...
随机推荐
- Numpy数组索引为-1和None
numpy的数组操作方便,可以用:来切片,用布尔数组或者布尔表达式来查找符合条件的数据,也可以用数组作为另一个数组的索引来查找指定的数据.但有时也会见到数组索引为-1和None.两者的用法如下: 1. ...
- 使用SimpleXML解析xml文件数据
最近工作要求从一个XML文档中批量读取APK应用数据,自然想到用SimpleXML.经过一段时间摸索,终于成功解析,现在将思路以及代码做下记录: xml文件格式大致如下: <?xml versi ...
- Leetcode题解(26)
80. Remove Duplicates from Sorted Array II 题目 分析:简单的操作,代码如下: class Solution { public: int removeDupl ...
- Matrix 矩阵
CSS3中的矩阵指的是一个方法,书写为matrix()和matrix3d(),前者是元素2D平面的移动变换(transform),后者则是3D变换.2D变换矩阵为3*3, 如上面矩阵示意图:3D变换则 ...
- SQL系统函数的使用(实验五)
SQL系统函数的使用(试验5) 函数在查询语句中的使用 查询员工的姓名和日工资(保留1位小数): 查询并显示部门号为01和02的所有员工的姓名首字及岗位: 查询并显示所有员工的姓名及工龄: 查询199 ...
- 从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库
开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...
- C#中的静态成员和非静态成员
C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用上会有什么不同呢? 让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法 ...
- [转载] linux中文件描述符fd和文件指针flip的理解
转载自http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通 ...
- [转载] Java线程池框架源码分析
转载自http://www.linuxidc.com/Linux/2014-11/108791.htm 相关类Executor,Executors,AbstractExecutorService,Ex ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...