UVa1025--A Spy in the Metro DP
来源:互联网 发布:上海九院 双眼皮 知乎 编辑:程序博客网 时间:2024/05/18 23:55
题目链接
https://cn.vjudge.net/problem/UVA-1025
题目大意:
一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短,输出最短等车时间。
解题思路:
首先我们定义状态f[i][j]表示:当前在第i各车站,时刻为j所等待的最少时间。那么,很显然,会有以下3种状态可以转移:
- 在原地等待:
f[i][j] = f[i][j+1]+1
- 搭乘向左的地铁(如果当前时刻有):
f[i][j] = f[i-1][j+t[i-1]]
- 搭乘向右的地铁(如果当前时刻有):
f[i][j] = f[i+1][j+t[i]]
Code:
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 55;const int MAXM = 205;int n, T, cas;int t[MAXN], f[MAXN][MAXM];int l[MAXN][MAXM], r[MAXN][MAXM];inline void init(){ memset(l, 0, sizeof l); memset(r, 0, sizeof r); memset(f, 0x3f, sizeof f); scanf("%d",&T); for(int i = 1; i < n; ++ i) scanf("%d",&t[i]); int m, tmp; scanf("%d",&m); for(int i = 1; i <= m; ++ i){ scanf("%d",&tmp); for(int j = 1; j <= n; ++ j) r[j][tmp] = 1, tmp += t[j]; } scanf("%d",&m); for(int i = 1; i <= m; ++ i){ scanf("%d",&tmp); for(int j = n; j >= 1; -- j) l[j][tmp] = 1, tmp += t[j-1]; }}int main(){ while(scanf("%d",&n), n){ init(), f[n][T] = 0; for(int j = T-1; j >= 0; -- j) for(int i = 1; i <= n; ++ i){ f[i][j] = f[i][j+1]+1; if(l[i][j]) f[i][j] = min(f[i][j], f[i-1][j+t[i-1]]); if(r[i][j]) f[i][j] = min(f[i][j], f[i+1][j+t[i]]); } printf("Case Number %d: ", ++cas); if(f[1][0] > T) printf("impossible\n"); else printf("%d\n",f[1][0]); } return 0;}
阅读全文
0 0
- UVa1025 - A Spy in the Metro(DP)
- UVa1025--A Spy in the Metro DP
- UVA1025 A Spy in the Metro DP
- UVa1025 A Spy in the Metro(dp)
- UVA1025---A Spy in the Metro(简单dp)
- UVA1025 A Spy in the Metro(dp)
- Uva1025 A Spy in the Metro (dp)
- UVA1025 A Spy in the Metro —— DP
- #UVA1025#A Spy in the Metro(Dp经典)
- uva1025 A Spy in the Metro (dp)
- uva1025 A Spy in the Metro
- UVa1025 - A Spy in the Metro
- Uva1025 - A Spy in the Metro
- UVA1025 - A Spy in the Metro
- uva1025 a spy in the metro
- UVA1025 A Spy in the Metro
- uva1025 A Spy in the Metro
- A Spy in the Metro uva1025
- [量亿数据-指数-期货数据]沙特不减产与石油市场博弈论
- 从30岁至35岁:为你的生命多积累一些厚度
- Mac OS终端命令
- Android studio 开发遇到Error:No resource identifier found for attribute 'roundIcon' in package 'android'
- Longest Substring Without Repeating Characters
- UVa1025--A Spy in the Metro DP
- 第二章:2.2 开始第一个 web Django 项目的创建和应用
- ListView多条目加载
- JS使用H5实现图片预览
- 关于三栏布局(浮动法/定位法/margin负值法)
- 犀哥教你用C写贪吃蛇
- 如何让接口函数出现更少的bug
- 关于XAMPP下载安装的一些问题
- Struts2拦截器--第三天