uva 590 dp
来源:互联网 发布:安卓app源码如何修改 编辑:程序博客网 时间:2024/06/07 22:36
UVA 590 - Always on the run
小偷要从城市1经过k天道城市n,给出这n个城市之间的航班表,要求第k天到城市n的最小花费。
dp[i][j] 第i天小偷在城市j的最小花费。
枚举第i-1天其所在的城市k,找出(k-j)在第i天的航班价格s,
dp[i][j] = min(dp[i-1][k] + s);
#include <bits/stdc++.h>using namespace std;const int INF = 999999999;struct Node { int b; int t[33];}p[12][12];int dp[1005][33];int _get(int a, int b, int c) { if (p[b][c].b != 0 && p[b][c].t[a%p[b][c].b] != 0) { return p[b][c].t[a%p[b][c].b]; } else { return INF; }}int n, k;int main () { for (int cases = 1; scanf ("%d%d", &n, &k) == 2; ++cases) { if (n == 0 && k == 0) break; for (int i=1; i<=n; i++) { for (int j=1; j<=n; j++) { if (i == j) continue; scanf ("%d", &p[i][j].b); for (int k=0; k<p[i][j].b; k++) { scanf ("%d", &p[i][j].t[k]); } } } for (int i=0; i<=k; i++) { fill(dp[i], dp[i]+n+1, INF); } dp[0][1] = 0; for (int i=1; i<=k; i++) { for (int j=1; j<=n; j++) { for (int k=1; k<=n; k++) { if (k == j) continue; dp[i][j] = min(dp[i][j], dp[i-1][k] + _get(i-1, k, j)); } } } printf("Scenario #%d\n", cases); if (dp[k][n] == INF) printf("No flight possible.\n"); else printf("The best flight costs %d.\n", dp[k][n]); printf("\n"); } return 0;}
0 0
- uva 590(dp)
- uva 590 dp
- UVA 590 - Always on the run (dp)
- UVA 590 Always on the run(dp)
- uva 590 Always on the run(dp)
- UVA 590 Always on the run | dp
- Always on the run - UVa 590 dp
- UVA 590 Always on the run(DP)
- UVA 590--Always on the run +dp
- uva 590 最优决策(DP)
- UVA DP 入门专题
- uva 1424 简单DP
- uva 10192 DP
- UVA dp题目汇总
- UVa 4256 - Salesmen dp
- UVa 10271 - Chopsticks dp
- UVA 1424 - Salesmen (dp)
- uva 672 Gangsters( dp )
- Search a 2D Matrix II 特殊数组的查找
- QByteArray类
- USACO 1.2 Dual PalinDromes (递归判断回文)
- Android测试四----TestRunner源码分析。
- 关于烂代码的那些事(中)
- uva 590 dp
- AFNetwork 作用和用法详解
- codeforces 152C 字符串的运用
- javascript var变量长度问题 --笔记
- android中的跨进程服务组件aidl
- linux select 系统调用
- 使用selenium webdriver进行元素定位
- xml多种方法注入java(学习记录)
- Ping pong