uva-1025
来源:互联网 发布:js href click 编辑:程序博客网 时间:2024/06/11 02:04
2017.12.4.---萌新刷dp第一夜
紫书第一道例题。我只想说mmp,根本想不到这么做。
今晚先写下今晚的感想,以后这题悟透了再继续添加。
大体思路就是,你在这一个时刻i可以继续等一分钟,也可以坐上向右或者向左的火车。目标是求最少的等待时间,那么我们就储存等待时间。
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <set>#include <stack>#include <string>#include <cmath>#include <map>#include <queue>#include <vector>using namespace std;const int maxn=250;const int INF=1e8;int n,T,k;int d[maxn];int l,r;int dp[maxn][maxn],train[maxn][maxn][4];int lt[maxn],rt[maxn];int main(){ while(scanf("%d",&n) && n) { scanf("%d",&T); memset(d,0,sizeof(d)); for(int i=1;i<=n-1;i++) scanf("%d",&d[i]); scanf("%d",&l); memset(lt,0,sizeof(lt)); for(int i=0;i<l;i++) scanf("%d",<[i]); scanf("%d",&r); memset(rt,0,sizeof(rt)); for(int i=0;i<r;i++) scanf("%d",&rt[i]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n-1;i++) dp[T][i]=INF; dp[T][n]=0; memset(train,0,sizeof(train)); for(int i=0;i<l;i++)//求出向右的火车在每个车站的时刻 { int val=0; for(int j=1;j<=n;j++) { train[lt[i]+val][j][0]=1; val+=d[j]; } } for(int i=0;i<r;i++)//求出向左的火车在每个车站的时刻 { int val=0; for(int j=n;j>0;j--) { train[rt[i]+val][j][1]=1; val+=d[j-1]; } } 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 && train[i][j][0] && i+d[j]<=T)//比较等待更优还是上向右的火车更优 dp[i][j]=min(dp[i][j],dp[i+d[j]][j+1]); if(j>1 && train[i][j][1] && i+d[j-1]<=T)//比较等待更优还是上向左的火车更优 dp[i][j]=min(dp[i][j],dp[i+d[j-1]][j-1]); } } printf("Case Number %d: ",++k); if(dp[0][1]>=INF) printf("impossible\n"); else printf("%d\n",dp[0][1]); } return 0;}
阅读全文
0 0
- uva-1025、uva-437、uva-1347、uva-116、uva-12563
- UVA 1025
- UVa 1025
- uva-1025
- UVA 1025 DP
- 动态规划 uva 1025
- UVa 1025 <DP>
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- 「BZOJ2115」「WC2011」 Xor
- PI算法
- LintCode: 114. 不同的路径 Java
- kali linux2.0 安装nessus家庭版
- springmvc如何设置多视图器,springmvc 多个 ViewResolver
- uva-1025
- tensorflow实现简单卷积网络进行mnist分类
- Python学习笔记——基础数学运算(只要五分钟就能掌握系列)
- MySQL5.5安装教程
- 求含有两个7的数
- 常用字符串查找函数
- DIscuz论坛上传附件2M限制修改
- 实现一个顺序表
- 第十一节 java面向对象,封装的简单介绍