博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 1025
阅读量:6091 次
发布时间:2019-06-20

本文共 1305 字,大约阅读时间需要 4 分钟。

题意:

某城市地铁是线性得,有n个车站,从左到右编号为1至n。有M1辆列车从第1站开始往右开,有M2辆列车从第n站开始往左开。在时刻0,Mario从第1站出发,目的是在时刻T会见车站n得一个间谍。在车站等车时容易被抓,所以她决定尽量躲在开动的火车上,让在车站等待的总时间尽量短。列车靠站停车时间忽略不计,并且Mario身手敏捷,即使两辆方向不同的列车在同一时间靠站,Mario也能完成换乘。

 

分析:

状态:d[i][j]代表时刻i,在车站j,最少的等待时间。边界情况d[T][n]=0,其余的d[T][i]为无穷大,i<T.

       有以下3种决策:

1,原地等待1分钟

2,搭乘往右开的车(如果有)

3,搭乘往左开的车(如果有)

#include 
#include
#include
#include
using namespace std;const int INF=1e9;int t[25];int dp[205][55];bool has_train[205][55][2];int main(){ //freopen("in.txt","r",stdin); int n,T; int kase=0; while(cin>>n,n) { memset(has_train,0,sizeof(has_train)); scanf("%d",&T); for(int i=1; i
T) break; has_train[d][j][0]=1; } } scanf("%d",&M); for(int i=0; i
=1; j--) { d+=t[j]; if(d>T) break; has_train[d][j][1]=1; } } for(int i=1; i<=n-1; i++) dp[T][i]=INF; dp[T][n]=0; for(int i=T-1; i>=0; i--) for(int j=1; j<=n; j++) { dp[i][j]=dp[i+1][j]+1; if(j
1 && has_train[i][j][1] && i+t[j-1]<=T) dp[i][j]=min(dp[i][j],dp[i+t[j-1]][j-1]); } printf("Case Number %d: ",++kase); if(dp[0][1]>=INF) printf("impossible\n"); else printf("%d\n",dp[0][1]); } return 0;}

 

转载于:https://www.cnblogs.com/pach/p/6724495.html

你可能感兴趣的文章
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
使用ansible工具部署ceph
查看>>
linux系列博文---->深入理解linux启动运行原理(一)
查看>>
Android反编译(一) 之反编译JAVA源码
查看>>
结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制...
查看>>
python-45: opener 的使用
查看>>
cad图纸转换完成的pdf格式模糊应该如何操作?
查看>>
Struts2与Struts1区别
查看>>
网站内容禁止复制解决办法
查看>>
Qt多线程
查看>>
我的友情链接
查看>>
想说一点东西。。。。
查看>>
css知多少(8)——float上篇
查看>>
NLB网路负载均衡管理器详解
查看>>
水平添加滚动条
查看>>
PHP中”单例模式“实例讲解
查看>>
VM EBS R12迁移,启动APTier . AutoConfig错误
查看>>
atitit.细节决定成败的适合情形与缺点
查看>>
Mysql利用binlog恢复数据
查看>>
我的友情链接
查看>>