UVA 116 Unidirectional TSP (多阶段决策问题,DP解决)
来源:互联网 发布:虾米音乐解绑淘宝 编辑:程序博客网 时间:2024/06/05 04:58
紫书上的例题,我们令dp【i】【j】为从表格i,j点开始到最后一列的最小花费。由于还需要输出字典序,所以每一个点我们都要得到它能到下一列哪三行,对于第0行和第n-1行特殊处理,然后将这三行排序,从最小的开始检验,如果符合条件则更新,这样就可以处理相等的情况,并且字典序是最小的。
代码如下:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<string>#include<set>#include<map>#include<stack>#include<queue>using namespace std;#define eps 1e-7const int maxn = 105;const int maxm = 10005;const int INF = 0x3f3f3f3f;int n, m;int dp[maxn][maxn], nx[maxn][maxn], G[maxn][maxn];int main() {#ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin);#endif // ONLINE_JUDGE while(scanf("%d%d", &n, &m) != EOF) { for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { scanf("%d", &G[i][j]); } } for(int i = 0; i < n; i++) { dp[i][m - 1] = G[i][m - 1]; } for(int j = m - 2; j >= 0; j--) { for(int i = 0; i < n; i++) { dp[i][j] = INF; int row[3] = {i - 1, i, i + 1}; if(i == 0) row[0] = n - 1; if(i == n - 1) row[2] = 0; sort(row, row + 3); for(int k = 0; k < 3; k++) { int d = dp[row[k]][j + 1] + G[i][j]; if(dp[i][j] > d) { dp[i][j] = d; nx[i][j] = row[k]; } } } } int Min = INF, key; for(int i = 0; i < n; i++) { if(dp[i][0] < Min) { Min = dp[i][0]; key = i; } } for(int i = 0; i < m; i++) { printf("%d%c", key + 1, i == m - 1 ? '\n' : ' '); key = nx[key][i]; } printf("%d\n", Min); } return 0;}
阅读全文
0 0
- UVA 116 Unidirectional TSP (多阶段决策问题,DP解决)
- dp uva-116-Unidirectional TSP
- UVa 116 Unidirectional TSP (DP)
- UVA 116 Unidirectional TSP (DP)
- UVa 116 - Unidirectional TSP(DP)
- Uva-116 Unidirectional TSP DP
- Unidirectional TSP - UVa 116 dp
- 【DP】UVA 116 Unidirectional TSP
- UVa 116 - Unidirectional TSP(dp)
- UVa 116 Unidirectional TSP(DP)
- DP--UVA - 116 Unidirectional TSP
- Uva--116 Unidirectional TSP(dp)
- UVA 116 Unidirectional TSP [DP]
- UVA 116 Unidirectional TSP(dp)
- UVA 116 Unidirectional TSP(dp + 数塔问题)
- UVA 116 Unidirectional TSP 经典dp题
- uva 116(Unidirectional TSP)(DP)
- uva 116 Unidirectional TSP (dp)
- 第四周项目一—建立单链表
- Python 查找指定类型的文件
- Redhat 企业版更改IP地址,网关,DNS和MAC地址
- java核心技术卷 之单选按钮
- Beanstalk 协议入门
- UVA 116 Unidirectional TSP (多阶段决策问题,DP解决)
- bzoj1986 [USACO2004 Dec] Dividing the Path 划区灌溉(dp+单调队列优化)
- java中的垃圾回收器(GC)
- Java日期格式Check
- 解决Jsoup解析html页面空格( )解析为乱码(问号)
- iOS之view的背景绘制渐变色、文字渐变
- 复杂密码生成工具apg
- XListView+ PullToRefreshListView+ViewPager
- 引用单元测试模块unittest框架(三)