UVa #1025 A Spy in the Metro (例题9-1)
来源:互联网 发布:华云数据面试 编辑:程序博客网 时间:2024/06/10 10:26
第一道动态规划。。书中给的状态转移的设计感觉很巧妙
要注意下数组大小避免RE。
Run Time: 0.032s
#define UVa "LT9-1.1025.cpp"//A Spy in the Metrochar fileIn[30] = UVa, fileOut[30] = UVa;#include<cstring>#include<cstdio>#include<algorithm>using namespace std;//Global Variables. Reset upon Each Case!const int maxt = 4000 + 10, maxn = 50 + 10, maxm = 50 + 10, INF = 100000000;int N, T, M1, M2, t[maxn], d[maxm], e[maxm];int has_train[maxt][maxn][2];int dp[maxt][maxn];/////void init() { memset(has_train, 0, sizeof(has_train)); scanf("%d", &T); for(int i = 0; i < N-1; i ++) scanf("%d", &t[i]); scanf("%d", &M1); for(int i = 0; i < M1; i ++) scanf("%d", &d[i]); scanf("%d", &M2); for(int i = 0; i < M2; i ++) scanf("%d", &e[i]); for(int i = 0; i < M1; i ++) { //trains from left start point. int time = d[i]; has_train[time][0][0] = 1; for(int j = 0; j < N-1; j ++) { //N-1 stations, N-2 intervals. time += t[j]; has_train[time][j+1][0] = 1; } } for(int i = 0; i < M2; i ++) { //trains from right start point. int time = e[i]; has_train[time][N-1][1] = 1; for(int j = N-2; j >= 0; j --) { //N-1 stations, N-2 intervals. time += t[j]; has_train[time][j][1] = 1; } }}int main() { int kase = 0; while(scanf("%d", &N) && N) { init(); for(int i = 0; i < N; i ++) dp[T][i] = INF; for(int i = 0; i <= T; i ++) dp[i][N-1] = 0; for(int i = T - 1; i >= 0; i --) { for(int j = 0; j < N; j ++) { dp[i][j] = dp[i+1][j] + 1; if(has_train[i][j][0] && j < N-1 && i + t[j] <= T) dp[i][j] = min(dp[i][j], dp[i+t[j]][j+1]); if(has_train[i][j][1] && j > 0 && 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][0] >= INF) printf("impossible\n"); else printf("%d\n", dp[0][0]); } return 0;}
0 0
- UVa #1025 A Spy in the Metro (例题9-1)
- 例题9-1 UVA - 1025 A Spy in the Metro 城市里的间谍(DP)
- UVA 1025 A Spy in the Metro
- UVa 1025 A Spy in the Metro
- Uva 1025 A Spy in the Metro
- UVa - 1025 - A Spy in the Metro
- UVA 1025 A Spy in the Metro
- uva 1025 - A Spy in the Metro
- uva 1025 A Spy in the Metro
- UVa 1025 - A Spy in the Metro
- UVA 1025 A Spy in the Metro
- uva 1025 A Spy in the Metro
- UVa 1025 A Spy in the Metro
- UVA - 1025 A Spy in the Metro
- UVA 1025 A Spy in the Metro
- A Spy in the Metro UVA
- UVA A Spy in the Metro
- A Spy in the Metro UVA
- 二叉树路径和
- Unity3D架构系列之- FSM有限状态机设计(六)(总结篇)
- UVa 211 - The Domino Effect [DFS剪枝]
- hdu 5172 线段树
- hiho #1079 离散化
- UVa #1025 A Spy in the Metro (例题9-1)
- UVA 10006 Carmichael Numbers (伪素数)
- 关于Cocos2d-x的一些认识(3)
- Poj 3009 Curling 2.0 (Dfs)
- 机器学习领域的几种主要学习方式
- 透明加密 SDK
- HDU 2203 亲和串 (KMP或者strstr)
- assets文件夹资源的访问
- C++类(Class)总结