uva 116 单向TSP
这题的状态很明显。
转移方程就是
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的更多相关文章
- UVa 116 单向TSP(多段图最短路)
https://cn.vjudge.net/problem/UVA-116 题意:给出m行n列的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列,要求经过的整数之和最小. ...
- uva 116 Unidirectional TSP (DP)
uva 116 Unidirectional TSP Background Problems that require minimum paths through some domain appear ...
- uva 116 Unidirectional TSP【号码塔+打印路径】
主题: uva 116 Unidirectional TSP 意甲冠军:给定一个矩阵,当前格儿童值三个方向回格最小值和当前的和,就第一列的最小值并打印路径(同样则去字典序最小的). 分析:刚開始想错了 ...
- UVA - 116 Unidirectional TSP (单向TSP)(dp---多段图的最短路)
题意:给一个m行n列(m<=10, n<=100)的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列.要求经过的整数之和最小.第一行的上一行是最后一行,最后一 ...
- UVA 116 Unidirectional TSP(dp + 数塔问题)
Unidirectional TSP Background Problems that require minimum paths through some domain appear in ma ...
- UVa - 116 - Unidirectional TSP
Background Problems that require minimum paths through some domain appear in many different areas of ...
- UVA 116 Unidirectional TSP(DP最短路字典序)
Description Unidirectional TSP Background Problems that require minimum paths through some domai ...
- UVa 116: Undirectional TSP
简单动态规划题.用取模实现第一行与最后一行连续,注意取字典序即可. 我的解题代码如下: #include <iostream> #include <cstdio> #inclu ...
- UVA 116 Unidirectional TSP 经典dp题
题意:找最短路,知道三种行走方式,给出图,求出一条从左边到右边的最短路,且字典序最小. 用dp记忆化搜索的思想来考虑是思路很清晰的,但是困难在如何求出字典序最小的路. 因为左边到右边的字典序最小就必须 ...
随机推荐
- python_如何在列表、字典中筛选数据?
实际问题有哪些? 过滤掉列表[3,9,-1,10.-2......] 中负数 筛选出字典{'li_ming':90,'xiao_hong':60,'li_kang':95,'bei_men':98} ...
- BSA Network Shell系列-nexec命令
# nexec ## 1 说明:nexec是远程命令接口引擎 ,用于在远程主机执行命令 nexec [-?] [-t term] [-o] [-i] [-l] [-nohup hostname &qu ...
- Linux指令--kill
Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须 ...
- matlab文件读写处理实例(一)——不规则文件读取
数据: A) Title: Income Data B) Relevant Information: Marketing Database. Source: Impact Resources, Inc ...
- win10 store 无法连接网络
当你试过所有的解决攻略 都无效时,那么使用这个教程 关闭以下的蓝色框里的
- 刚买个炼狱蝰蛇1800dpi的下完驱动提示没有发现鼠标
2017-02-19补充:可以下载下面的程序 ,也可以访问 http://cn.razerzone.com/synapse/ 下载雷云 也可解决问题 ------------------------ ...
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.9_归一化normalization
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9 归一化Normaliation 训练神经网络,其中一个加速训练的方法就是归一化输入(normalize inputs). 假设我们有一个 ...
- Docker+Jenkins持续集成环境(5): android构建与apk发布
项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...
- Sonar 数据库表关系整理一(续)
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 简介:Sonar平台是目前较为流行的静态代码扫描平台,为了便于使用以及自己二次开发,有必要对它的数据库结构进行学习 ...
- ansible playbook实践(二)-基础相关命令
ansible相关的命令: ansible 用来执行ansible管理命令 ansible-doc 用来获取模块的帮助文档 ansible-playbook 当有众多任务时,可编写成playbook ...