这题的状态很明显。

转移方程就是

d(i,j)=min(d(i+1,j+1),d(i,j+1),d(i-1,j+1)) //注意边界

我用了一个next数组方便打印结果,但是一直编译错误,原来是不能用next命名数组,会和std::next冲突.

AC代码

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100+5;
const long long INF=(1<<30);
int nexter[10][maxn],a[10][maxn];
long long dp[10][maxn];
int n,m;
int main(){
    while(scanf("%d%d",&n,&m)==2){
        for(int i=0;i<n;++i)
            for(int j=0;j<m;++j)
            scanf("%d",&a[i][j]);
        //初始化边界
        for(int i=0;i<n;++i)
            dp[i][m-1]=a[i][m-1];
        for(int j=m-2;j>=0;--j) //逆推
            for(int i=0;i<n;++i){
            int row[3]={i,i-1,i+1};
            if(i==0) row[1]=n-1;
            if(i==n-1) row[2]=0;
            sort(row,row+3);  //字典序最小
            dp[i][j]=INF;
            for(int k=0;k<3;++k){
                long long w=a[i][j]+dp[row[k]][j+1];
                if(w<dp[i][j]) {
                    dp[i][j]=w;
                    nexter[i][j]=row[k];
                }
            }
        }
        long long ans=INF*100;
        int first;
        for(int i=0;i<n;++i){
            if(dp[i][0]<ans){
                ans=dp[i][0];
                first=i;
            }
        }
        printf("%d",first+1);
        for(int i=nexter[first][0],j=1;j<m;i=nexter[i][j],++j){
            printf(" %d",i+1);
        }
        printf("\n%lld\n",ans);
    }
    return 0;
}

如有不当之处欢迎指出!

uva 116 单向TSP的更多相关文章

  1. UVa 116 单向TSP(多段图最短路)

    https://cn.vjudge.net/problem/UVA-116 题意:给出m行n列的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列,要求经过的整数之和最小. ...

  2. uva 116 Unidirectional TSP (DP)

    uva 116 Unidirectional TSP Background Problems that require minimum paths through some domain appear ...

  3. uva 116 Unidirectional TSP【号码塔+打印路径】

    主题: uva 116 Unidirectional TSP 意甲冠军:给定一个矩阵,当前格儿童值三个方向回格最小值和当前的和,就第一列的最小值并打印路径(同样则去字典序最小的). 分析:刚開始想错了 ...

  4. UVA - 116 Unidirectional TSP (单向TSP)(dp---多段图的最短路)

    题意:给一个m行n列(m<=10, n<=100)的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列.要求经过的整数之和最小.第一行的上一行是最后一行,最后一 ...

  5. UVA 116 Unidirectional TSP(dp + 数塔问题)

     Unidirectional TSP  Background Problems that require minimum paths through some domain appear in ma ...

  6. UVa - 116 - Unidirectional TSP

    Background Problems that require minimum paths through some domain appear in many different areas of ...

  7. UVA 116 Unidirectional TSP(DP最短路字典序)

    Description    Unidirectional TSP  Background Problems that require minimum paths through some domai ...

  8. UVa 116: Undirectional TSP

    简单动态规划题.用取模实现第一行与最后一行连续,注意取字典序即可. 我的解题代码如下: #include <iostream> #include <cstdio> #inclu ...

  9. UVA 116 Unidirectional TSP 经典dp题

    题意:找最短路,知道三种行走方式,给出图,求出一条从左边到右边的最短路,且字典序最小. 用dp记忆化搜索的思想来考虑是思路很清晰的,但是困难在如何求出字典序最小的路. 因为左边到右边的字典序最小就必须 ...

随机推荐

  1. Java进阶篇(六)——Swing程序设计(下)

    三.布局管理器 Swing中,每个组件在容器中都有一个具体的位置和大小,在容器中摆放各自组件时很难判断其具体位置和大小,这里我们就要引入布局管理器了,它提供了基本的布局功能,可以有效的处理整个窗体的布 ...

  2. 根据URL下载图片至客户端、服务器实例

    1.保存至服务器 根据路径保存至项目所在服务器上. String imgUrl="";//图片地址 try { // 构造URL URL url = new URL(imgUrl) ...

  3. Rhel-Server 5.5 安装ORACLE10

    VMWARE + REDHAT + ORA10 先说一下环境,操作系统为Microsoft Windows Server 2003,安装的是虚拟机VMware Workstation Version ...

  4. 在Intellij IDEA 中clean报错:-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.

    解决办法:添加VM属性   -Dmaven.multiModuleProjectDirectory=$M2_HOME

  5. A/X家FPGA架构及资源评估

    评估对比xilinx以及altera两家FPGA芯片逻辑资源. 首先要说明, 现今FPGA除了常规逻辑资源,还具有很多其他片内资源比如块RAM.DSP单元.高速串行收发器.PLL.ADC等等,用以应对 ...

  6. 新awk整理

    总感觉上一篇awk的总结几乎是照着man翻译过来的,惨不忍睹 无意间在互联网上有找到了宝贵的资料 感觉整理的很好,想着照着这个来重新写下,对照新的man更新下吧,只是总是在改变的 一.awk简介二.a ...

  7. Redis的部署

    笔者Q:972581034 交流群:605799367 欢迎加群交流 官方网站 redis.io 下载 cd /usr/local/src wget http://download.redis.io/ ...

  8. 自定义Func模块

    自定义Func模块 (1)自定义模块步骤 (2)生成模块 [root@controller modules]# cd /usr/lib/python2.7/site-packages/func/min ...

  9. JSP与HTML及前后分离

    JSP是什么 首先要知道JSP的本质其实是个Servlet,index.jsp在访问的时候首先会自动将该页面翻译生一个index_jsp.java文件,即Servlet代码. 打开这个类你会发现这个类 ...

  10. editplus 常用正则

    EditPlus的查找,替换,文件中查找支持以下的正则表达式: Expression Description\t Tab character.\n New line.. Matches any cha ...