UVa1025
来源:互联网 发布:疯狂java讲义怎么样 编辑:程序博客网 时间:2024/04/29 18:51
DP第一题
d(i,j)表示时刻i在车站j,最少还需要等多长时间,
边界条件式是d(T,j)=0,其他为正无穷,有3中决策
1:等待1分钟
2:搭乘往右开的车
3:塔乘往左开的车
#include<bits/stdc++.h>using namespace std;int dp[220][55];int visit[220][55][2];int t[220],d1[55],d2[55];const int INF = 0x3f3f3f3f;int main(){ int n,T; int M1,M2; int k=1; while(~scanf("%d",&n)&&n){ scanf("%d",&T); for(int i=1;i<n;i++) scanf("%d",&t[i]); scanf("%d",&M1); for(int i=1;i<=M1;i++) scanf("%d",&d1[i]); scanf("%d",&M2); for(int i=1;i<=M2;i++) scanf("%d",&d2[i]); memset(visit,0,sizeof(visit)); for(int i=1;i<=M1;i++) { visit[d1[i]] [1][0]=1; int temp=d1[i]; for(int j=1;j<n;j++){ temp+=t[j]; if(temp<=T) visit[temp][j+1][0]=1; else break; } } for(int i=1;i<=M2;i++) { visit[d2[i]] [n][1]=1; int temp=d2[i]; for(int j=n-1;j>1;j--){ temp+=t[j]; if(temp<=T) visit[temp][j][1]=1; else break; } } 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&&visit[i][j][0]&&i+t[j]<=T) dp[i][j]=min(dp[i][j],dp[i+t[j]][j+1]); if(j>1&&visit[i][j][1]&&i+t[j-1]<=T) dp[i][j]=min(dp[i][j],dp[i+t[j-1]][j-1]); } } if(dp[0][1]>=INF) printf("Case Number %d: impossible\n",k++); else printf("Case Number %d: %d\n",k++,dp[0][1]); } return 0;}
0 0
- UVa1025
- UVa1025
- UVa1025
- UVa1025
- UVa1025
- uva1025
- uva1025
- dp uva1025
- uva1025(基础dp)
- uva1025-《算法入门经典》
- UVa1025/UVa437/UVa1347
- uva1025 动态规划
- UVA1025 固定终点二维dp
- [UVA1025]城市里的间谍
- uva1025 A Spy in the Metro
- UVa1025 - A Spy in the Metro
- UVa1025 DP (还要再看看~)
- Uva1025 - A Spy in the Metro
- javascript基础教程第8版---第5章窗口与框架---学习笔记
- android从网上下载图片
- 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧(转载)
- 铁轨(Rails) UVa514
- iOS音频播放基础
- UVa1025
- NYOJ-91阶乘之和
- 数据库的一点小总结
- 在raspberry通过PHP调用python中simplecv进行远程监控
- 安装双系统
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
- UVa437
- 日期操作类(Date、Calendar、DateFomat、SimpleDateFormat类)
- [UE]《Microinteractions》