uva1025 动态规划
这道题的边界是dp(T,N)=0,状态dp(i,j)表示在时间i、第j个车站最少等待时间,有三个决策:1、等1分钟 2、如果有向左的车,向左 3、若果有向右的车,向右 转移方程就是dp(i,j)=min(dp(i+1,j),dp(i+t[j],j+1),dp(i+t[j-1],j-1))
AC代码:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int INF=1<<30; const int maxn=200+5; int dp[maxn][55]; int time[55],t[55]; int has[12600][55][2]; //has train int main(){ int N,T,M1,M2; int kase=0; while(scanf("%d",&N)==1&&N){ scanf("%d",&T); time[1]=0; for(int i=2;i<=N;++i){ scanf("%d",&t[i]); time[i]=time[i-1]+t[i]; } memset(has,0,sizeof(has)); scanf("%d",&M1); for(int i=1;i<=M1;++i){ //right int r; scanf("%d",&r); for(int j=1;j<=N;++j){ has[r+time[j]][j][0]=1; } } scanf("%d",&M2); for(int i=1;i<=M2;++i){ int l; scanf("%d",&l); for(int j=N;j>=1;--j){ has[l+time[N]-time[j]][j][1]=1; } } for(int i=1;i<N;++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<N&&has[i][j][0]&&i+t[j+1]<=T) dp[i][j]=min(dp[i][j],dp[i+t[j+1]][j+1]); if(j>1&&has[i][j][1]&&i+t[j]<=T) dp[i][j]=min(dp[i][j],dp[i+t[j]][j-1]); } printf("Case Number %d: ",++kase); if(dp[0][1]>=INF) printf("impossible\n"); else printf("%d\n",dp[0][1]); } return 0; }
若有不当之处欢迎指出!
uva1025 动态规划的更多相关文章
- 【动态规划】[UVA1025]A Spy in the Metro 城市里的间谍
参考:https://blog.csdn.net/NOIAu/article/details/71517440 https://blog.csdn.net/c20180630/article/deta ...
- 【Uva1025 A Spy in the Metro】动态规划
题目描述 某城市地铁是线性的,有n(2≤n≤50)个车站,从左到右编号1~n.有M1辆列车从第1站开始往右开,还有M2辆列车从第n站开始往左开.列车在相邻站台间所需的运行时间是固定的,因为所有列车的运 ...
- 增强学习(三)----- MDP的动态规划解法
上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的 ...
- 简单动态规划-LeetCode198
题目:House Robber You are a professional robber planning to rob houses along a street. Each house has ...
- 动态规划 Dynamic Programming
March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...
- 动态规划之最长公共子序列(LCS)
转自:http://segmentfault.com/blog/exploring/ LCS 问题描述 定义: 一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 ...
- C#动态规划查找两个字符串最大子串
//动态规划查找两个字符串最大子串 public static string lcs(string word1, string word2) { ...
- C#递归、动态规划计算斐波那契数列
//递归 public static long recurFib(int num) { if (num < 2) ...
- 动态规划求最长公共子序列(Longest Common Subsequence, LCS)
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
随机推荐
- 利用JS判断浏览器种类
现在浏览器很多,写代码的时候常常存在兼容性问题,所以判断用户使用的浏览器很重要.userAgent带有浏览器的种类及版本号等信息,所以可以通过userAgent属性来判断.一些冷门的浏览器,可以通过打 ...
- Linux系统中常用操作命令
常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdi ...
- 【原创】@ResponseBody返回json数据时出现中文乱码
ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 原因: Spring中解析字符串的转换器默认编码格式是ISO-8859-1 public class StringHttpMessageCon ...
- 细数Python Flask微信公众号开发中遇到的那些坑
最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到 ...
- python字符串常用的方法解析
这是本人在学习python过程中总结的一些关于字符串的常用的方法. 文中引用了python3.5版本内置的帮助文档,大致进行翻译,并添加了几个小实验. isalnum S.isalnum() -> ...
- redis2 安装步骤备忘
编译 make MALLOC=jemalloc 开启后台进程 /opt/redis2/src/redis-server /opt/redis2/redis.conf 配置,后台驻守模式一定要开 vi ...
- 从UUID想到的
1.UUID的定义 通用唯一标识符(UUID)被设计成一个在时间和空间上都独一无二的数字,常被用作唯一性标识. UUID是一个由5位十六进制数的字符串表示的128比特数字,其格式为 aaaaaaaa- ...
- vue1.0中$index一直报错的解决办法
原文链接:https://www.cnblogs.com/liqiong-web/p/8144925.html 看学习视频,因为年份比较早了,其实vue早已迭代到vue2.0了,遇到一些问题: v-f ...
- [Sdoi2017]数字表格 [莫比乌斯反演]
[Sdoi2017]数字表格 题意:求 \[ \prod_{i=1}^n \prod_{j=1}^m f[(i,j)] \] 考场60分 其实多推一步就推倒了... 因为是乘,我们可以放到幂上 \[ ...
- R语言-选择样本数量
功效分析:可以帮助在给定置信度的情况下,判断检测到给定效应值时所需的样本量,也可以在给定置信水平的情况下,计算某样本量内可以检测到的给定效应值的概率 1.t检验 案例:使用手机和司机反应时间的实验 l ...