可将旅行商的路线看作是从n - 1号点出发, 跳着到0号点, 再折返走完之前跳过的点. 想到这个, 暴力就可以得50分.

正解是DP.

f[i][j](i > j)表示, 从i开始跳, 并返回至j所需要的最小花费(从定义上i, j可互换)

因而得到递推式:

f[i + 1][i] = min(f[i + 1][i], f[i][j] + w[j][i + 1])

f[i + 1][j] = min(f[i + 1][j], f[i][j] + w[i][i + 1])

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxN = 1500;
int w[maxN][maxN];
int f[maxN][maxN];
int main()
{
freopen("putnik.in", "r", stdin);
freopen("putnik.out", "w", stdout);
ios::sync_with_stdio(false);
int n;
cin >> n;
for(int i = 0; i < n; i ++)
for(int j = 0; j < n; j ++)
cin >> w[i][j];
memset(f, 127, sizeof(f));
f[0][0] = 0;
for(int i = 0; i < n; i ++)
for(int j = 0; j <= i; j ++)
if(f[i][j] < (int)2e9)
f[i + 1][i] = min(f[i + 1][i], f[i][j] + w[j][i + 1]),
f[i + 1][j] = min(f[i + 1][j], f[i][j] + w[i][i + 1]);
int ans = (int)2e9;
for(int i = 0; i < n; i ++)
ans = min(ans, f[n - 1][i]);
cout << ans;
}

最新文章

  1. C#开发微信门户及应用(12)-使用语音处理
  2. 使用Jmeter进行简单的http接口测试
  3. iOS文件操作
  4. 从OGRE,GAMEPLAY3D,COCOS2D-X看开源
  5. [搜片神器]服务器SQL2005查询分页语句你理解了么
  6. spoj 2148
  7. XML前言
  8. Lucene 实例教程(四)之检索方法总结
  9. 查看表结构命令(mysql和oracle)
  10. [UIKit学习]05.关于plist
  11. Nuxt框架实践
  12. 微信小程序中的rpx与移动设备物理像素
  13. 微服务下 Spring Boot Maven 工程依赖关系管理
  14. java-Set集合、HashSet集合、LinkedHashSet集合和TreeSet集合
  15. ftell
  16. php后台管理员权限相关表结构
  17. Objective-c官方文档 封装数据属性
  18. Task 6.4 冲刺Two之站立会议6
  19. swift学习笔记之---数组、字典、枚举、结构体
  20. 20145230熊佳炜《逆向及BOF基础实践》

热门文章

  1. ESP8266入门学习笔记1:资料获取
  2. NOIP 2017 小凯的疑惑
  3. 搭建基于金山快盘的Git服务器
  4. Java学习笔记2---设置环境变量JAVA_HOME,CLASSPATH,PATH
  5. 我的PC必装软件
  6. 使用MySQLWorkBench连接数据库
  7. 子元素浮动父容器高度不能自适应的CSS解决方法
  8. 洛谷 [P2886] 牛继电器Cow Relays
  9. 【CF1015A】Points in Segments(签到)
  10. 【BZOJ1059】矩阵游戏(二分图最大匹配)