UVa116 (单向TSP,多决策问题)
/*----UVa1347 单向TSP
用d(i,j)表示从格子(i,j)出发到最后一列的最小开销
则在(i,j)处有三种决策,d(i,j)转移到d(i-1,j+1),d(i,j+1),d(i+1,j+1),还需要一个数组来记录每一步决策过程
*/
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<vector>
#include<string.h>
#include<math.h>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
const int maxn = 100+10;
int a[maxn][maxn], dp[maxn][maxn],c[maxn][maxn];
int n, m;
void print(int i, int j){
if (j < m){
printf("%d", i+1);
printf(j == m - 1 ? "\n" : " ");
print(c[i][j], j + 1);
}
}
int main(){
int i, j,k;
while (~scanf("%d%d", &n, &m)){
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
scanf("%d", &a[i][j]);
for (j = m - 1; j >= 0; j--)
for (i = 0; i < n; i++){
if (j == m - 1) dp[i][j] = a[i][j]; //边界条件
else{
if (i == 0)k = n- 1;
else k = i - 1;
dp[i][j] = dp[k][j + 1] + a[i][j];
c[i][j] = k; if (dp[i][j] == dp[i][j + 1] + a[i][j] && i<c[i][j])
c[i][j] = i;
if (dp[i][j]>dp[i][j + 1] + a[i][j]){
dp[i][j] = dp[i][j + 1] + a[i][j];
c[i][j] = i;
} if (i == n - 1) k = 0;
else k = i + 1;
if (dp[i][j] == dp[k][j + 1] + a[i][j] && k<c[i][j])
c[i][j] = k;
if (dp[i][j]>dp[k][j + 1] + a[i][j]){
dp[i][j] = dp[k][j + 1] + a[i][j];
c[i][j] = k;
}
}
}
j = 0;
for (i = 1; i < n; i++){
if (dp[i][0]<dp[j][0])
j = i;
}
print(j, 0);
printf("%d\n", dp[j][0]);
}
return 0;
}
UVa116 (单向TSP,多决策问题)的更多相关文章
- UVa-116 Unidirectional TSP 单向旅行商
题目 https://vjudge.net/problem/uva-116 分析 设d[i][j]为从(i,j)到最后一列的最小开销,则d[i][j]=a[i][j]+max(d[i+1][j+1], ...
- UVA116 Unidirectional TSP 单向TSP
分阶段的DAG,注意字典序的处理和路径的保存. 定义状态d[i][j]为从i,j 出发到最后一列的最小花费,转移的时候只有三种,向上,向下,或平移. #include<bits/stdc++.h ...
- Uva116 Unidirectional TSP
https://odzkskevi.qnssl.com/292ca2c84ab5bd27a2a91d66827dd320?v=1508162936 https://vjudge.net/problem ...
- UVA116 单向 DSP(多段图最短路)
单向 DSP [题目链接]单向 DSP [题目类型]dp &题解: 紫书P271 这块的字典序排序我觉得挺厉害的,每次都把那3步sort一下,之后if (v< d[i][j]) 这块的小 ...
- HDU 1619 Unidirectional TSP(单向TSP + 路径打印)
Unidirectional TSP Problem Description Problems that require minimum paths through some domain appea ...
- UVa 116 单向TSP(多段图最短路)
https://cn.vjudge.net/problem/UVA-116 题意:给出m行n列的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列,要求经过的整数之和最小. ...
- Uva 116,单向TSP
题目链接:https://uva.onlinejudge.org/external/1/116.pdf 和矩形嵌套,巴比伦塔差不多. 题意: 给出矩阵,这个矩阵是环形的,就是说第一行的上一行是最后一行 ...
- uva 116 单向TSP
这题的状态很明显. 转移方程就是 d(i,j)=min(d(i+1,j+1),d(i,j+1),d(i-1,j+1)) //注意边界 我用了一个next数组方便打印结果,但是一直编译错误,原来是不能用 ...
- UVA - 116 Unidirectional TSP (单向TSP)(dp---多段图的最短路)
题意:给一个m行n列(m<=10, n<=100)的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列.要求经过的整数之和最小.第一行的上一行是最后一行,最后一 ...
随机推荐
- CodeForces Round #515 Div.3 C. Books Queries
http://codeforces.com/contest/1066/problem/C You have got a shelf and want to put some books on it. ...
- 像Excel的表格table
推荐:Spread.js 地址:点击打开链接 Demo:点击打开链接
- Hexo博客收录百度和谷歌-基于Next主题
Hexo博客收录百度和谷歌-基于Next主题(应该是比较全面的一篇教程) 我们的博客做出来当然是希望别人来访问,但是Github和Coding都做了防爬虫处理,这样子我们博客可能就无法被搜索引擎收录, ...
- 2017 多校5 hdu 6093 Rikka with Number
2017 多校5 Rikka with Number(数学 + 数位dp) 题意: 统计\([L,R]\)内 有多少数字 满足在某个\(d(d>=2)\)进制下是\(d\)的全排列的 \(1 & ...
- 【BZOJ 2809 dispatching】
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4393 Solved: 2246[Submit][Status][Discuss] Descript ...
- 使用fastJSON解析HashMap中的数据
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entr ...
- typedef函数用法
转载自:http://www.cnblogs.com/ggjucheng/archive/2011/12/27/2303238.html 引言 typedef 声明,简称 typedef,为现有类型创 ...
- 浅谈Visitor Pattern
第一步: 在介绍Visitor Pattern (访问者模式)之前,先简要介绍一下:双重分派. 在Visitor Pattern中双重分派是指:数据结构的每一个节点都可以接受一个访问者的调用(这句 ...
- java 复习整理(三 修饰符)
访问控制修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java支持4种不同的访问权限. 默认的,也称为default,在同一包内可见,不使用任何修饰符. 私有的,以pr ...
- source insight setting
adjust source code font size Options -> File Type Options -> Screen Font -> Size adjust dis ...